0

シナリオ

ページは、この URL で利用可能なリモート スクリプトを呼び出します: http://url.to.script/myScript?ScriptParamsList。次のように仮定します。

  • 非同期実行は必要ありません。
  • 出力を表示する必要はありません。
  • スクリプトは、ボタン クリック イベントで呼び出されます。Handler() を JavaScript イベント ハンドラーにします。

    function Handler() { //invoke the remote script }

Handler() 関数を実装するには、いくつかのメソッドを使用できます。

  • スクリプト vs img タグ:

document.write('<script src="http://url.to.script/myScript?ScriptParamsList" type="text/javascript"></script>');

document.write('<img src="http://url.to.script/myScript?ScriptParamsList" />');

  • jQuery .html() と .load() :

$('#TargetDiv').html('<img src="http://url.to.script/myScript?ScriptParamsList" />');

$('#TargetDiv').load('http://url.to.script/myScript?ScriptParamsList');

質問

メリットとデメリットは?

4

1 に答える 1

1
  • document.writeドキュメントがロードされた後に呼び出されると、現在のドキュメントを置き換えます。この方法は絶対に使用しないでください。
  • を使用<script>すると、同じオリジン ポリシーに妨げられることなく、外部ドメインからリクエストを取得できます。さらに、サーバーの応答で、JavaScript を追加して実行することができます。これは役立つ場合があります。
  • .html('<img ...>')サーバーが意味のあるデータを含む画像を返さない限り、使用しても意味がありません。サーバーリクエストのみをトリガーする場合は、次の方法が適しています。

    new Image().src = 'http://url.to.script/myScript?...';
    
  • $('..').loadオリジン ポリシーが同じであるため、URL が別のドメインにある場合は機能しません。

私はその方法に一票new Image().src = '..';。この構文が嫌いで、さらに jQuery が必要な場合は、次を使用します。

$('<img>').attr('src', 'http://...');

注: 結果はキャッシュされる場合があります。これが発生したくない場合は、ランダムなクエリ文字列を追加して、キャッシュを壊します (例: url = url + '&_t=' + new Date().getTime())。

于 2012-07-18T14:11:56.510 に答える