我正在尝试在greasemonkey 脚本中使用jquery 获取jsonp 回调。这是我的 jquery:
$.ajax({
url: "http://mydomain.com/MyWebService?callback=?",
data: { authkey: "temphash" },
type: "get",
dataType: "json",
cache: false,
success: function(data) {
console.log(data);
}
});
在我的网络服务 (asp.net) 中,我返回内容类型为 application/javascript
的响应。服务器实际发回的响应是:
jsonp1276109314602({"message":"I'm getting tired of this not working"})
jsonp1276109314602
方法名称是由 jquery 随机生成的,我用 Request.QueryString["callback"]
来获取它
但是我的成功函数从未被调用,并且 Firebug 控制台给我一个错误,说 jsonp1276109314602 is not defined
.
我做错了什么?
注意 我正在通过 craigslist 页面上的 Greasemonkey 脚本进行此调用。这是一个跨域请求,但我可以看到该请求实际上正在发送到服务器并返回一个良好的响应,但无论出于何种原因,当响应返回时,jquery 创建的已注册回调似乎不存在。如果我从 craigslist 页面在 firebug 控制台中运行该脚本,则效果很好,但如果从 Greasemonkey 脚本运行该脚本,则效果不佳。
最佳答案
您是否已经尝试过:
$.ajax({
url: "http://mydomain.com/MyWebService",
data: { authkey: "temphash" },
type: "get",
dataType: "jsonp",
cache: false,
success: function(data) {
console.log(data);
}
});
来自docs :
"jsonp": Loads in a JSON block using JSONP. Will add an extra "?callback=?" to the end of your URL to specify the callback.
我没有检查 jQuery 的源代码,但除非您为 dataType 选项指定 jsonp,否则回调函数可能不会创建。
关于asp.net - JSONP回调方法未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008960/