Mic*_*cah 5 asp.net ajax jquery greasemonkey jsonp
我试图在一个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);
}
});
Run Code Online (Sandbox Code Playgroud)
在我的webservice(asp.net)中,我将返回内容类型为的响应application/javascript
.服务器实际发回的响应是:
jsonp1276109314602({"message":"I'm getting tired of this not working"})
Run Code Online (Sandbox Code Playgroud)
该jsonp1276109314602
方法名称由jQuery的被随机生成的,并且我与它抢夺Request.QueryString["callback"]
但是我的成功函数从未调用过,而firebug控制台给我一个错误说法jsonp1276109314602 is not defined
.
我究竟做错了什么?
注意 我正在craigslist页面上的greasemonkey脚本中进行此调用.这是一个跨域请求,但我可以看到请求实际上是在服务器上并返回一个好的响应,但无论出于何种原因,当响应返回时,jquery创建的注册回调似乎不存在.如果我从craigslist页面在firebug控制台中运行脚本,它可以正常工作,但是当它从greasemonkey脚本运行时则不行.
事实证明,您必须做一些额外的事情(双关语)才能让它在 GreetMonkey 脚本中工作。
长答案可以在这里找到:jQuery.getJSON inside a greatmonkey user script。
简短的答案是放弃 JSONP 方法并将其包含在您的脚本中:
// @require http://courses.ischool.berkeley.edu/i290-4/f09/resources/gm_jq_xhr.js
Run Code Online (Sandbox Code Playgroud)
不确定我是否理解这一切,但它仍然像冠军一样工作,我能够从我的脚本发出跨域请求。