我的情况非常奇怪。我有一个.NET Web服务(.asmx),我试图通过jQuery ajax来填充一些<select></select>
。该服务正在运行System.Web.Services
,它应该返回JSON列表。至少这是我理解它将在.NET 3.5 / 4.0中的方式。
主要问题是.ajax()
函数(下面)似乎执行但内部回调没有执行。我知道它正在执行,因为我可以在函数之前和之后执行某些操作并执行,因此JavaScript不会爆炸。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'http://localhost:59191/AFEDropDownService/Service.asmx/GetAVP',
data: "{}",
dataType: "jsonp",
crossDomain: true,
success: function(list) {
console.log(list);
console.log("success!!");
},
error: function(msg) {
console.log("error: " + msg.text);
}
});
如果您需要更多代码,请告诉我们。或者,如果您在我尝试构建级联<select></select
时知道更好的方法。
我将它从“jsonp”更改为“json”,现在我又回到了“undefined”的错误消息。反正有没有找到 WHAT 未定义?我担心自己有点过头了。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'http://localhost:59191/AFEDropDownService/Service.asmx/GetAVP',
data: "{}",
dataType: "json",
success: function(list) {
console.log(list);
console.log("success!!");
},
error: function(msg) {
//console.log("error: " + msg.text);
}
});
我输入了以下.ajaxError()
代码,它在firebug中为“thrownError”对象显示了一个“空字符串”。
$("#sel_AFE").ajaxError(function(e,xhr,settings,thrownError){
console.log('error in: ' + settings.url + ' \n'+'error:\n' + thrownError);
});
答案 0 :(得分:0)
为什么不使用json而不是jsonp ..另外你为什么要设置跨域..
您是否在浏览器的响应部分看到了jsonp数据???
也可以使用
代替error: function(msg){
console.log("error: " + msg.text);
} .. try Using
error: function(jqXHR, textStatus, errorThrown){
// log all the details here
}
答案 1 :(得分:0)
如果使用jQuery.post()的请求返回错误代码,则会失败 除非脚本也调用了全局.ajaxError() 方法。或者,从jQuery 1.5开始,使用.error()方法 jQuery.post()返回的jqXHR对象也可用于出错 处理
以下是如何使用success
和error
回调的示例:
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post("example.php", function() {
alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
// perform other work here ...
// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });