我绝对疯了......在执行这个简单的Javascript时,我在Firebug中不断出现“无效标签”错误:
$(document).ready(function(){
$.ajax({
url: "http://jsonip.com",
dataType: "jsonp",
success: function(data) {
alert("success!")
}
});
});
Firebug会说(在控制台标签中):
Invalid label
{"ip":"99.99.99.99"}
带有指向第一个双引号的指针(由于显而易见的原因,模拟了IP地址)。
网络标签中的调用是人们所期望的:http://jsonip.com/?callback=jQuery17108684927028894522_1326752040735&_=1326752042159
,因此回调参数也就位。
我正在使用jQuery 1.7.1。我也尝试过使用jQuery 1.6.4,但没有成功。
任何人......?谢谢!
答案 0 :(得分:3)
要为jsonip.com指定JSONP回调,您必须将回调名称设置为:
http://jsonip.com/{theCallback}
要使用jQuery执行此操作,ajax
方法有一些简单的配置。这段代码适合我:
$(document).ready(function() {
$.ajax({
url: "http://jsonip.com/theCallbackFunction",
dataType: "jsonp",
jsonp: false,
jsonpCallback: "theCallbackFunction",
success: function(data) {
alert(data.ip);
}
});
});
问候!
答案 1 :(得分:1)
回调函数似乎作为url片段传递。查看fiddle
答案 2 :(得分:1)
关于eagleoneraptor的回答和lonesomeday的评论:
您可以动态创建回调函数的动态名称,并将该名称附加到网址:
$.ajax({
url: "http://jsonip.com/",
dataType: "jsonp",
jsonpCallback:function(){var fnc='cb'+$.now();this.url+=fnc;return fnc;},
jsonp:false,
success: function(data) {
alert(data.ip)
}
});
答案 3 :(得分:0)
我运行jsonip.com。
该服务现在支持:
请注意,对于参数回调,需要?回调。当然,“myfunc”可以是你想要的任何东西。
有关详细信息,请参阅http://jsonip.com/about。