我正在使用来自html页面的an.ajax jquery调用来访问跨域web服务。虽然我可以使用firebug查看jsonp数据,但我无法将其加载到变量中甚至显示它(用于调试目的)。尝试使用jsonpCallback,success和complete函数检索数据总是会导致'undefined'/ null数据。
最终,我需要将数据保存到变量中。任何帮助将不胜感激!
$.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
}
});
答案 0 :(得分:3)
在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);
}
});