0

私は次のJavaScriptを持っています

$.ajax({
    type: ... url: ... data: ... bla bla...

    success: function( html ) {

        var response = $( html ).filter( '#targetID' ).html();

        $( 'body' ).html( response ).show('slow');

    }
});

javascriptを使用してページをロードすることを除いて、正常に動作し、javascriptが消えます。では、この問題を解決するにはどうすればよいでしょうか。

4

2 に答える 2

1

本体内でコンテナを使用し、コードを本体に直接配置しないでください。

すなわち。コンテナとなるボディ内のdivタグを追加します

<div class="container"></div>

次に、JS 呼び出しで

 $( '.container' ).html( response ).show('slow');

そうすれば、コンテンツは、そこにある JS を含むページのすべてのコンテンツを置き換える本文ではなく、コンテナに読み込まれます。

また、Ajax 呼び出しを使用する場合、よりクリーンなコードで応答を他の関数に渡して処理することができると思います。そうすれば、デバッグする関数が小さくなり、コードを理解しやすくなります。

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {

      //Here you pass the response to the other function
      processSuccess(data);
  },
  fail: function(data) {

      //Here you pass the response to the other function
      processFail(data);
  }

});

function processSuccess(response) {
     //Print the response in the console (ie. Firebug console) 
     //if console is available
     if(console) {
        console.log(response);
     }
};

function processFail(response) {
     //Print the response in the console (ie. Firebug console) 
     //if console is available
     if(console) {
        console.log(response);
     }
};

もちろん、名前空間内のすべてのことは、それをさらに良くします。

于 2012-09-22T23:06:20.640 に答える
0

つまり、Ajax リクエストを通じて JavaScript を取得しているということです。

その場合、その中に適切なコードがあることを本当に確認する必要があります。互換性は、そのようなものとの雌犬だからです。JQuery は、結果をロードするときに評価関数をデュオするので、js をロードする必要があります。しかし、あなたのコードには、ページ上では通常無視される aprse エラーが含まれている可能性がありますが、eval で使用すると、一部のブラウザでエラーが発生します。

どのブラウザを使用していますか?

指定された div にコードをロードした後、コードを評価してみてください。

于 2012-09-22T22:59:03.733 に答える