[英]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.