2011-10-17 14 views
1

こんにちは仲間StackOverflowのユーザー、jQueryのAJAXリクエストとインラインjavascriptの

は私がショッピングカートを更新するAJAX要求を行うページを持っています。 問題は、カートにajaxリクエストでページを分割するインラインJavaScriptがあることです。

次は私が使用してAjaxのリクエストです:

$.ajax({ 
     url: "Default.aspx?ID=5&productid=PROD147&cartcmd=add", 
     success: function() { 
      $.ajax({ 
       url: "Default.aspx?ID=5", 
       dataType: "html", 
       cache: false, 
       success: function(html){ 
        $(html).remove('script'); 
        console.log(html); 
        var ajax_shoppingcart = $('#shoppingcart',html).html(); 
        $('#shoppingcart').html(ajax_shoppingcart); 
        var ajax_basket = $('#topbanner_eshop',html).filter(":not(script)").html(); 
        $('#topbanner_eshop').html(ajax_basket); 
        } 
      }); 
     } 
    }); 

しかし、問題は、それが#topbanner_eshopにロードしたデータは、ページを壊しjavascriptの、いくつかのインラインが含まれていることです。

それは、次のHTMLをインポートしようとします:

<div id="topbanner_eshop"> 
    <div> 
     <div> 
      <a href="Default.aspx?ID=24">Shop videre » </a> 
     </div> 
     <div> 
      2 varer i kurven 
     </div> 
     <div> 
      Total 
     </div> 
     <div> 
      <script type="text/javascript"> 
      // var str="190,00"; 
      var str="DKK 190,00"; 
      document.write(str.replace(/,00/, ",-")); 
      </script> 
     </div> 
    </div> 
</div> 

をしかし、それは、インラインスクリプトに到達したときには、スクリプトの結果でページ全体を置き換えます。

どうしたのですか?

+1

「インラインJavaScriptがページを壊す」とはどういう意味ですか?また、ページが読み込まれた後に 'document.write()'を呼び出すと、ページ全体が上書きされます。それをしないでください。 –

答えて

1

まあ、一つのことのために、これがあります:

$(html).remove('script'); 

あなたが明示的にスクリプト要素を削除しています。

実際のスクリプトでは、「document.write()」が使用されます。これは、ページが読み込まれると暗黙的に破棄されます。つまり、 "document.write()"を呼び出すと暗黙的に "document.open()"が呼び出され、DOMが消去されます。代わりに「()のdocument.write」の

、あなたはこれを行うことができます:

<span id='amount'></span> 
<script> 
    var str = "DKK 190,00"; // I presume that's actually a server-side thing 
    $('#amount').text(str.replace(/,00/, ',-')); 
</script> 

はそれだけで、サーバー側のコードの文字列を修正するために多くの方が良いだろう。

+0

ありがとう。私はそれを試して戻ってくる。あなたが気づいたかもしれないので、私はバスケットコードを書きませんでした。そして、私は正規のJSで少し不明です。しかし、彼らはそれをページを消去せずに、通常のページの読み込みでそれを実行することができます(それは正常に動作します。 –

+0

完全なページが解釈されている間、まだ開いているので、 "document.write()"の呼び出しはそれを再オープンしません。 – Pointy

+0

ありがとう、ありがとう:) –

1

jQueryが正しく機能しています。問題はHTMLコードにあります。どのページでもdocument.writeを呼び出すと、ページの内容全体が結果に置き換えられるので、おそらく他のものを使用したいと思うでしょう。

関連する問題