1

環境:Visual Studio 2012、MVC4、Razor、インターネットアプリケーション。eBay APIを使用していて、検索結果(JSON)を表示したいと思います。コード付きのビューページがあります...

<script>
function _cb_findItemsByKeywords(root)
{
  var items = root.findItemsByKeywordsResponse[0].searchResult[0].item || [];
  var html = [];
  html.push('<table width="100%" border="0" cellspacing="0" cellpadding="3"><tbody>');

  for (var i = 0; i < items.length; ++i)  
  {
    var item     = items[i];
    var title    = item.title;
    var pic      = item.galleryURL;
    var viewitem = item.viewItemURL;

    if (null != title && null != viewitem)
    {
      html.push('<tr><td>' + '<img src="' + pic + '" border="0">' + '</td>' + 
        '<td><a href="' + viewitem + '" target="_blank">' + title + '</a></td></tr>');
    }
  }
  html.push('</tbody></table>');
  document.getElementById("results").innerHTML = html.join("");
}
</script>

「.js」ファイルの次の行:

var url = "http://ebay.com?..."

このビューページを開いたときに、「。js」ファイルからこのURLを自動的に実行するにはどうすればよいですか?(このURLはEbayサーバーにリクエストを送信し、データを受信します。これはこのビューページに表示されます。)

質問を少し変更します...[表示]ページからこのコードを実行している場合、すべてが正常に機能します。

<script src=http://ebay.com?... </script>

この部分(「http://ebay.com?...」を変数として)を「.js」ファイルから受け取るにはどうすればよいですか?出来ますか?

4

2 に答える 2

1

リクエストを送信したいだけの場合はsrc、たとえば、それをとしてDOMに画像を追加できます。

リクエストからデータを受け取りたい場合は、AJAX呼び出しを行う必要があります。これはブラウザによって処理がまったく異なるため、jQueryなどのフレームワークを使用することをお勧めします。

ただし、URLは自分のドメインとは異なるドメインにあるため、通常のAJAXリクエストではアクセスできません。JSONPリクエストと呼ばれるものを参照する必要があります。これを行うには、フェッチするドキュメントが特定の方法でフォーマットされている必要があります。そうでない場合、同一生成元ポリシーにより、JavaScriptはこの相互作用を許可しません。

JSONPでは、リモートドキュメントの形式が次のとおりである必要があります。

someCallbackFunction(javaScriptObjectWithData);

含まれている場合は、そのURLをとしてDOMにスクリプトファイルを含めることができますsrc。ドキュメントのコンテンツは、フェッチされるとすぐにブラウザで実行されます。その時点で、ドキュメントで行われているコールバックと一致する名前のコールバック関数を指定する必要があります(これは通常、元のリクエストのクエリ文字列を介して指定できるものです)。

リモートドキュメントの形式が原因で、これらのオプションのいずれも使用できない場合は、サーバー側からドキュメントを要求する必要があります。自分でサーバーサイド環境にアクセスできない場合は、これを行うために、他の誰かのサーバーを使用するオプションがあります。Yahooのカスタムクエリ言語であるYQLは、リモートドキュメントのコンテンツのクエリに使用でき、YQLJSONPを介して利用できるため、リクエストをそれらを介して中継できる可能性があります。

JSONPでのYQLの使用に関するこの投稿を参照してください


更新します。データを追加したので、eBay APIをJSONPで使用できます。これが、探しているソリューションだと思います。

于 2012-09-11T07:12:30.613 に答える
0

解決しました...

<script src="/Scripts/ebay.js" type="text/javascript"></script>
<script>
    s = document.createElement( 'script' );
    s.src = url;
    document.body.appendChild( s );
</script>
于 2012-09-11T07:35:07.847 に答える