来自url的Jquery getJSON和隐藏源中的URL

时间:2013-05-17 14:51:05

标签: jquery json

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

getJSON尝试将 Customer.html 解释为JSON时,它会失败,因为它只是没有能力解决它刚收到一些HTML,更不用说解决了浏览器收到后如何表现。

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

但如果页面不是来自Web服务器的服务器,则无法执行此操作。 所以试试这个:

将Customer.html更改为:

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

然后将您的代码更改为这个两阶段流程,该流程从Customer页面读取URL,然后从那里获取最终的JSON:

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

   <your present code here>

}

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

答案 1 :(得分: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');
        }
      });
    });