我在使用jQuery进行ajax调用时遇到问题。这样做了一百万次之后,我知道我错过了一些非常愚蠢的东西。这是我用于进行ajax调用的javascript代码:
function editEmployee(id) {
$('#<%= imgNewEmployeeWait.ClientID %>').hide();
$('#divAddNewEmployeeDialog input[type=text]').val('');
$('#divAddNewEmployeeDialog select option:first-child').attr("selected", "selected");
$('#divAddNewEmployeeDialog').dialog('open');
$('#createEditEmployeeId').text(id);
var inputEmp = {};
inputEmp.id = id;
var jsonInputEmp = JSON.stringify(inputEmp);
debugger;
alert('Before Ajax Call!');
$.ajax({
type: "POST",
url: "Configuration.aspx/GetEmployee",
data: jsonInputEmp,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert('success');
},
error: function (msg) {
alert('failure');
}
});
}
这是我尝试调用的CS代码:
[WebMethod]
public static string GetEmployee(int id)
{
var employee = new Employee(id);
return Newtonsoft.Json.JsonConvert.SerializeObject(employee, Newtonsoft.Json.Formatting.Indented);
}
当我尝试运行此功能时,我会收到Before Ajax Call!
的警告。但是,我从来没有收到success
提醒或提示failure
的提醒。我确实进入了我的CS代码并在GetEmployee
方法上设置了一个断点。断点确实命中了,所以我知道jQuery成功调用了该方法。我逐步完成了该方法,它执行得很好,没有错误。我只能假设当jQuery ajax调用从调用返回时发生错误。
另外,我查看了我的事件日志,以确保没有发生ASPX错误。日志中没有错误。我也看了一下控制台。没有脚本错误。任何人都有任何想法,我在这里缺少什么?
`
答案 0 :(得分:0)
试一下
function editEmployee(id) {
$('#<%= imgNewEmployeeWait.ClientID %>').hide();
$('#divAddNewEmployeeDialog input[type=text]').val('');
$('#divAddNewEmployeeDialog select option:first-child').attr("selected", "selected");
$('#divAddNewEmployeeDialog').dialog('open');
$('#createEditEmployeeId').text(id);
//var inputEmp = {};
// inputEmp.id = id;
// var jsonInputEmp = JSON.stringify(inputEmp);
//debugger;
alert('Before Ajax Call!');
$.ajax({
type: "POST",
url: "Configuration.aspx/GetEmployee",
data: {id: id},
// contentType: "application/json; charset=utf-8",
// dataType: "json",
success: function (msg) {
alert('success');
},
error: function (msg) {
alert('failure');
}
}); }
答案 1 :(得分:0)
如果ajax调用没有进入success函数,则问题在于CS代码中的dataformat。返回数据不得采用正确的JSON格式。你应该得到“500”错误。
尝试以适当的JSON格式返回。