繁体   English   中英

尝试从宁静的Web服务检索JSON时使用的标签无效

[英]Invalid label in trying to retrieve json from a restful webservice

在Firebug上运行时具有此代码,在控制台中它将显示无效标签 ,并且不会触发我的成功回调。 在摆弄我关于谷歌答案的方式后,我发现使用jsonp时我需要解析结果,并且还需要回调。 现在,我把头撞在墙上,寻找可能的答案。 你能帮我这个吗? 谢谢。

    $.ajax( {
        url: 'http://localhost:8732/Service1/data/10',
        type: "GET",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        processdata:true,
        jsonpCallback: 'mycallback',
        success : function(data) {

           var json = $.parseJSON(data);
           $('#items').html(json);
           alert(json);

        },
        error : function(req, status, ex) {

          alert("Lol" + ex);

        }
        });
      }

另外, alert("Lol"+ex)也会提示未调用LoljQuery16403233689395911671_1329386795307

jsonpString

覆盖jsonp请求中的回调函数名称。 将使用此值代替'callback =?'中的'callback'。 网址中查询字符串的一部分。 因此{jsonp:'onJSONPLoad'}将导致'onJSONPLoad =?' 传递给服务器。 从jQuery 1.5开始,将jsonp选项设置为false可防止jQuery将“?callback”字符串添加到URL或尝试使用“ =?”。 进行转化。 在这种情况下,您还应该显式设置jsonpCallback设置。 例如,{jsonp:false,jsonpCallback:“ callbackName”}

jsonpCallbackString,函数

指定JSONP请求的回调函数名称。 将使用该值代替jQuery自动生成的随机名称。 最好让jQuery生成一个唯一的名称,因为它可以更轻松地管理请求并提供回调和错误处理。 当您要启用更好的浏览器缓存GET请求时,可能需要指定回调。 从jQuery 1.5开始,您还可以为该设置使用一个函数,在这种情况下,jsonpCallback的值设置为该函数的返回值。

代码示例:

<!DOCTYPE html>
<html>
<head>
  <style>img{ height: 100px; float: left; }</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <div id="images">

</div>
<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  {
    tags: "cat",
    tagmode: "any",
    format: "json"
  },
  function(data) {
    $.each(data.items, function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    });
  });</script>

</body>
</html>

参考资料: http : //api.jquery.com/jQuery.getJSON/

编辑:代码2

$.ajax({
    url: 'http://server:port/path/to/file',
    type: 'GET',
    dataType: 'jsonp',
    cache: false,
    jsonp: '$callback',
    error: function (x, t, r) { alert(x.response.message); },
    success: function (data) {
        $.each(data.d.results, function (i, val) {
            $("#results").append("<div>" + val.name + "</div>");
        });
    }
});

json在http:// localhost:8732 / Service1 / data / 10上有效吗? 粘贴在: http : //jsonlint.com/ 您也可以尝试通过执行以下操作捕获错误:

var request = $.ajax( {
    ...
});

request.error(function(error) {
    console.log(error);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM