我的情况很奇怪。我有一个 .NET Web 服务 (.asmx),我试图通过 jQuery ajax 调用它来填充一些<select></select>
's。该服务正在按预期运行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);
}
});
如果您需要更多代码,请告诉我。或者,如果您在我尝试构建 cascading 时知道更好<select></select
的方法。
更新
我将它从“jsonp”更改为“json”,现在我回到了“未定义”的错误消息。有没有办法找出未定义的内容?恐怕我有点过头了。
$.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);
}
});
更新 2
我输入了以下.ajaxError()
代码,它在萤火虫中为“thrownError”对象显示了一个“空字符串”。
$("#sel_AFE").ajaxError(function(e,xhr,settings,thrownError){
console.log('error in: ' + settings.url + ' \n'+'error:\n' + thrownError);
});