如何从“.js”文件运行URL?

时间:2012-09-11 07:06:55

标签: javascript asp.net-mvc

环境:Visual Studio 2012,MVC4,Razor,Internet Application。 我正在使用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?..."

当我打开此View页面时,如何自动从“.js”文件中执行此URL? (此URL向Ebay服务器发送请求并接收数据,该请求将显示在此View页面上。)

我会稍微改变一个问题...... 如果我从View页面运行此代码,一切正常:

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

如何从“.js”文件中接收此部分(“http://ebay.com?...”作为变量)?有可能吗?

2 个答案:

答案 0 :(得分:1)

如果您只想发送请求,可以将图像添加到DOM,例如src

如果您想从请求中接收数据,则必须进行AJAX调用。在不同的浏览器中处理方式完全不同,因此使用框架(例如jQuery)是个好主意。

但是,由于URL与您的域不在同一个域,因此您将无法使用常规AJAX请求访问它。您必须引用所谓的JSONP请求。这要求您提取的文档以特定方式格式化以允许此操作。如果不是,由于Same-Origin Policy

,JavaScript根本不允许此互动

JSONP要求远程文档具有以下格式:

someCallbackFunction(javaScriptObjectWithData);

如果是,您可以将一个脚本文件包含在DOM中,并将该URL作为src,一旦提取,文档内容将立即在您的浏览器中执行。那时你应该指定一个回调函数,其名称与文档中的回调相匹配(这通常可以通过原始请求中的查询字符串指定)。

如果您无法使用这些选项,由于远程文档的格式,您将不得不从服务器端请求文档。如果您自己无法访问服务器端环境,为了执行此操作,可以选择使用某些服务器。 Yahoo的自定义查询语言 - YQL - 可用于查询远程文档的内容,YQL 可通过JSONP获取,因此您可以通过它们转发您的请求。

See this post on using YQL with JSONP


更新,现在您已添加了更多数据eBay API is available for JSONP,我认为这是您正在寻找的解决方案。

答案 1 :(得分:0)

...解决

<script src="/Scripts/ebay.js" type="text/javascript"></script>
<script>
    s = document.createElement( 'script' );
    s.src = url;
    document.body.appendChild( s );
</script>