Ajax调用没有调用服务器端,并且在httpxx中显示错误为“在ajax post调用中加载内容错误(NS_ERROR_DOCUMENT_NOT_CACHED)”

在这里,我正在从我的asp.net页面调用一个简单的ajax调用,它显示了httpfox上的以下错误。 “加载内容时出错(NS_ERROR_DOCUMENT_NOT_CACHED)”和

error: function () { alert(arguments[2]); } 

我的ajax调用显示警告消息为“内部服务器错误”

在这里,我创建一个JSON数组,并将该json数组转换为JSON字符串,并作为参数传递给服务器端方法。

这是我的ajax电话

  $('#btnResult').on('click', function () { var myObject = new Object(); $("# tr").each(function () { var id = $(this).find("input[name*='ID']").val(); var locationcode = $(this).find("input[name*='TextLocationCode']").val(); var Location = $(this).find("input[name*='TextLocation']").val(); myObject.id = id; myObject.locationcode = locationcode; myObject.Location = Location; }); var myString = JSON.stringify(myObject); alert(myString); var exportdata = myString; $.ajax({ type: "POST", url: "Default.aspx/ExportToExcel", data: exportdata, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { $("#Result").text(data.d); }, error: function () { alert(arguments[2]); } }); }); }); 

这是我的服务器端代码

  [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public static string ExportToExcel(string details) { return "Message : Success"; } 

任何的想法 ? 这里发生了什么事 ?

试试这个:

 $('#btnResult').on('click', function () { var myArray = []; $("#<%=GridProjectDetails.ClientID %> tr").each(function () { var id = $(this).find("input[name*='ID']").val(); var locationcode = $(this).find("input[name*='TextLocationCode']").val(); var Location = $(this).find("input[name*='TextLocation']").val(); var myObject = new Object(); myObject.id = id; myObject.locationcode = locationcode; myObject.Location = Location; myArray.push(myObject); }); var myString = JSON.stringify({details: JSON.stringify(myArray)}); alert(myString); var exportdata = myString; $.ajax({ type: "POST", url: "Default.aspx/ExportToExcel", data: exportdata, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { $("#Result").text(data.d); }, error: function () { alert(arguments[2]); } }); }); }); 

感谢您的所有回复。

今天我在谷歌搜索超过1小时后得到了答案。

我学到的东西是在使用stringfy()方法发送json数据时,在服务器端我们需要将参数定义为对象。 不是像string / int / bla bla那样的任何其他格式…..

实际上我的服务器端参数有一个错误。我将它从字符串修改为对象,它对我有用。 在这里,我定义了我修改过的答案。

  $('#btnResult').on('click', function () { var mydata = []; $("#<%=GridProjectDetails.ClientID %> tr").each(function () { var myObject = new Object(); var id = $(this).find("input[name*='ID']").val(); var locationcode = $(this).find("input[name*='TextLocationCode']").val(); var Location = $(this).find("input[name*='TextLocation']").val(); myObject.id = id; myObject.locationcode = locationcode; myObject.Location = Location; mydata.push(myObject); }); var myString = JSON.stringify({ details: JSON.stringify(mydata) }); alert(myString); var exportdata = myString; $.ajax({ type: "POST", url: "Default.aspx/ExportToExcel", data: exportdata, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { $("#Result").text(data.d); }, error: function () { alert(arguments[2]); } }); }); }); 

我的服务器端方法应该是

 [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public static string ExportToExcel(object details) { return "Message : Success"; } 

使用以下方法发送数据

  data: "{'details':" + myString "}",