0

我无法使用$.ajax. 我得到一个错误"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) {}
});
4

2 回答 2

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
});
于 2012-08-24T10:52:07.707 回答
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”属性中的数据,因此您的回调函数是:

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);    
于 2013-03-19T17:30:21.790 回答