我在我的aspx页面上调用了ajax:
$.ajax({
url: "/SiteAdmin3/UpsIntegration.aspx/addUpdatePackageData",
data: JSON.stringify({
'_OrderNumber': $("#txtOrderNumber").val(),
'_PackageNumber': $("#lblPackageNumber").html(),
'_Height': $("#txtPackageHeight").val(),
'_Width': $("#txtPackageWidth").val(),
'_Lenght': $("#txtPackageLenght").val(),
'_Weight': $("#txtPackageWeight").val(),
'_ReferanceNumber1': $("#txtPackageReferanceNumber1").val(),
'_ReferanceNumber2': $("#txtPackageReferanceNumber2").val(),
'_ReferanceNumber3': $("#txtPackageReferanceNumber3").val(),
'_ReferanceNumber4': $("#txtPackageReferanceNumber4").val(),
'_ReferanceNumber5': $("#txtPackageReferanceNumber5").val(),
'_PackageType': $("#ddlAddPackageType").val()
}),
contentType: 'application/json;',
dataType: "json",
type: 'POST',
cache: false,
success: function (Data) {
//whatever operation to be performed
},
error: function (err) {
alert("Error in Saving.Please try later." + JSON.stringify(err));
}
});
在cs页面上,我的addUpdatePackageData方法是:
[WebMethod()]
public static ShipStationIntegration[] addUpdatePackageData(string _OrderNumber, string _PackageNumber, string _Height, string _Width, string _Lenght, string _Weight, string _ReferanceNumber1, string _ReferanceNumber2, string _ReferanceNumber3, string _ReferanceNumber4, string _ReferanceNumber5, string _PackageType)
{
System.Collections.Generic.List<ShipStationIntegration> lst = new List<ShipStationIntegration>();
try
{
lst = bindPackageListFromPageMethod();
return lst.ToArray();
}
catch (Exception)
{
return lst.ToArray();
}
}
这将返回正确的列表。
但是在得到响应之后它总是进入ajax的错误块并且给出错误:
我不明白它有什么问题?
我也尝试过:
contentType: 'application/json; charset=utf-8',
但仍有错误。
请帮帮我。
答案 0 :(得分:1)
如果您使用的是VS 2010集成Web服务器(Cassini),则它不支持集成管道模式。您需要下载IIS Express并将项目设置为使用它。
答案 1 :(得分:1)
当您从网络方式返回并且响应格式应为JSON
时,响应会传递给httpModule
,并将响应序列化为JSON
并尝试执行Response.Headers.Add("Content-type", "application/json");
但是这种方式添加http标头不受Cassini支持,因为这种方式需要集成管道模式,并且正如@Kevin所说:
Cassini不支持Integrated Pipeline