1

我正在使用 jQuery 调用 JSON web 服务,它工作正常,除了我调用的 URL 需要隐藏在源代码中。我正在尝试使用本地页面作为 $.getJSON 的 url 参数,然后此页面将重定向到 JSON 服务。如果我在浏览器中调用该页面,它会正确重定向并显示 JSON 数据,但 $.getJSON 没有拾取它。

$.getJSON("Customer.html", function (result) {

Customer.html 通过以下方式重定向调用 JSON。

<script>
       window.location = "http://MYJSONURL";
</script>

任何其他想法或建议将不胜感激。

4

2 回答 2

0

问题是$.getJSON调用期望返回一些 JSON(这只是一些文本)。您的Customer.html文件正在发回一小段 JavaScript,当在浏览器中运行时,它会将浏览器重定向到您想要的任何位置。

getJSON试图将Customer.html解释为 JSON 时,它会失败,因为它只是没有能力判断它刚刚收到了一些 html,更不用说判断浏览器收到它时的行为方式。

您是否尝试过从 Customer.html 发送重定向标头?

但是,如果该页面不是来自 Web 服务器的服务器,则您不能这样做。所以试试这个:

将 Customer.html 更改为:

{ 
  "url": "http://MYJSONURL"
}

然后将您的代码更改为这个 2 阶段过程,该过程从客户页面读取 URL,然后从那里获取最后一段 JSON:

$.getJSON("Customer.html", function (urldata) {
   var url = urldata.url;
   $.getJSON(url, function (result) {

   <your present code here>

}

当然,最好将 Customer.html 的名称更改为 Customer.json。

于 2013-05-17T15:43:35.950 回答
0

好的,您可以像这样直接调用Web服务

 $(document).ready(function() {
      $.ajax({
        type: "POST",
        url: "RSSReader.asmx/GetRSSReader",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data) {
           var items = [];
           $.each(data, function(key, val) {
             items.push('<li id="' + key + '">' + val + '</li>');
           });

         $('<ul/>', {
            'class': 'my-new-list',
            html: items.join('')
          }).appendTo('body');
        }
      });
    });
于 2013-05-17T17:43:18.283 回答