ajax'GET'调用返回jsonp可以,但是回调会产生'undefined'数据 [英] ajax 'GET' call returns jsonp okay but callback produces 'undefined' data
问题描述
我正在使用HTML页面中的.ajax jquery调用来访问跨域Web服务.虽然我可以使用firebug看到jsonp数据,但我无法将其加载到变量中甚至无法显示出来(出于调试目的).尝试使用jsonpCallback,成功和完成函数检索数据始终会导致未定义"/空数据.
最终,我需要将数据保存到变量中.任何帮助将不胜感激!
$.ajax({
data: {
User: UserValue,
GUID: GUIDValue
},
cache: false,
dataType: "jsonp", // tried json
type: "GET",
crossDomain: true,
jsonp: false, // tried true
jsonpCallback: function (saveData) {
if (saveData == null) {
alert("DATA IS UNDEFINED!"); // displays every time
}
alert("Success is " + saveData); // 'Success is undefined'
},
url: "http://localhost/NotifMOD/NotifService.svc/GetAllMessages?callback=success?",
async: false, // tried true
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
},
complete: function (a, b) {
alert(a); //[object Object]
alert(b); // parseerror
}
});
在JSONP中,您必须在代码中定义函数.
jsonpCallback必须是此函数的名称,而不是函数.
请参见 http://api.jquery.com/jQuery.ajax/ >
您这样做:
function receive(saveData) {
if (saveData == null) {
alert("DATA IS UNDEFINED!"); // displays every time
}
alert("Success is " + saveData); // 'Success is undefined'
}
$.ajax({
data: {
User: UserValue,
GUID: GUIDValue
},
cache: false,
dataType: "jsonp", // tried json
type: "GET",
crossDomain: true,
jsonp: false, // tried true
jsonpCallback: "receive",
url: "http://localhost/NotifMOD/NotifService.svc/GetAllMessages?callback=receive?",
async: false, // tried true
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
I'm accessing a cross-domain webservice utilizing an.ajax jquery call from an html page. While I can see the jsonp data using firebug, I am not able to load it into a variable or even display it (for debugging purposes). Attempts to retrieve data using the jsonpCallback, success and complete functions always result in 'undefined' / null data.
Ultimately, I need to save the data to variables. Any assistance will be greatly appreciated!
$.ajax({
data: {
User: UserValue,
GUID: GUIDValue
},
cache: false,
dataType: "jsonp", // tried json
type: "GET",
crossDomain: true,
jsonp: false, // tried true
jsonpCallback: function (saveData) {
if (saveData == null) {
alert("DATA IS UNDEFINED!"); // displays every time
}
alert("Success is " + saveData); // 'Success is undefined'
},
url: "http://localhost/NotifMOD/NotifService.svc/GetAllMessages?callback=success?",
async: false, // tried true
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
},
complete: function (a, b) {
alert(a); //[object Object]
alert(b); // parseerror
}
});
In JSONP you must define your function in your code.
jsonpCallback must be the name of this function, not a function.
See http://api.jquery.com/jQuery.ajax/
You do it like this :
function receive(saveData) {
if (saveData == null) {
alert("DATA IS UNDEFINED!"); // displays every time
}
alert("Success is " + saveData); // 'Success is undefined'
}
$.ajax({
data: {
User: UserValue,
GUID: GUIDValue
},
cache: false,
dataType: "jsonp", // tried json
type: "GET",
crossDomain: true,
jsonp: false, // tried true
jsonpCallback: "receive",
url: "http://localhost/NotifMOD/NotifService.svc/GetAllMessages?callback=receive?",
async: false, // tried true
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
这篇关于ajax'GET'调用返回jsonp可以,但是回调会产生'undefined'数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!