我无法使用$.ajax
捕获C#对jQuery的响应。我收到错误"SCRIPT ERROR"
。如何使用JSONP捕获响应?这就是我正在使用的:
$.ajax({
async: true,
context: mrq,
cache: false,
type: "GET",
url: MYURL,
crossDomain: true,
dataType: 'jsonp',
data: MYDATA,
processData: false,
jsonp: "jsonREQ",
jsonpCallback: "onJSONPsuccess",
success: function (jsonText, textStatus) {}
});
答案 0 :(得分:0)
据我了解,dataType: 'jsonp'
表示一旦返回它就会将其作为参数放入回调函数中。所以,我试试这个:
onJSONPsuccess = function(response) {
// do something with response, e.g.
results = response["results"]
}
$.ajax({
crossDomain: true,
dataType: 'jsonp',
data: { /*params you're sending in*/ },
jsonp: "jsonREQ",
jsonpCallback: "onJSONPsuccess",
success: onJSONPsuccess
});
答案 1 :(得分:0)
你说服务器端是C# - 你在使用WCF吗?这里有一篇很棒的文章: http://bendewey.wordpress.com/2009/11/24/using-jsonp-with-wcf-and-jquery/
基本上你需要设置WCF(或你正在使用的任何服务器端代码)来返回包含在回调函数调用中的json。
但是,使用jquery,你可以简单地添加“?Callback =?”到你的URL,将dataType更改为'jsonp',并忘记其余的东西。您不需要设置jsonp或jsonpCallback选项。
与json请求相反,jsonp请求将返回包含在'd'属性中的 not 数据,因此您的回调函数为:
function(data) { var a = data.myProperty ... }
而不是
function(data) { var a = data.d.myProperty ... }
整个方法是:
var url = configuration.serviceUrl + "/" + method + "?callback=?";
var options = {
type: 'GET',
url: url,
data: args,
dataType: "jsonp",
contentType: "application/json",
success: function(data) {
if (callback != null) callback(data);
}
};
if (typeof errorCallback != 'undefined')
options.error = errorCallback;
$.ajax(options);