jQuery AJAX POST到ASMX web服务导致“无法转换系统类型的对象”.字符串到system . coll
本文关键字:类型 系统 转换 对象 coll system 字符串 ASMX POST AJAX web | 更新日期: 2023-09-27 18:15:37
我设置了一个ASMX web服务作为测试:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public bool Test (string id)
{
if (id != null)
{
return true;
}
else
return false;
}
从jQuery我然后不是调用web方法和传递参数"id"。所以我使用:
$.ajax({
var data = JSON.stringify("id: 123");
data: data,
dataType: "json",
url: url
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (result) {},
error: function (xmlHttpRequest, textStatus, errorThrown) {
console.log(xmlHttpRequest.responseText);
console.log(textStatus);
console.log(errorThrown);
}
});
我已经使用JSON.stringify
来确保JSON是正确的。然而,当我运行上面的代码时,我得到以下500内部服务器错误:
{"消息":"无法转换类型为'u0027System的对象。字符串' u0027类型system . string, ' u0027System.Collections.Generic.IDictionary ' 2 [System.Object] ' u0027"、"加":"在System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(对象0、类型类型,JavaScriptSerializer序列化器,布尔抛出错误对象'u0026 convertedObject)'r'n atSystem.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(对象0、类型类型,JavaScriptSerializer序列化器,布尔抛出错误对象'u0026 convertedObject)'r'n atSystem.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T](字符串输入)' r ' nSystem.Web.Script.Services.RestHandler.ExecuteWebServiceCall (HttpContext背景下,WebServiceMethodDatamethodData)"、"ExceptionType":"系统。InvalidOperationException "}VM12798:89误差
在我看来,一旦通过服务器接收到请求,这个错误就会发生。我不确定,然而,为什么它试图把字符串变成一个IDictonary
?
上面的代码看起来很简单。我设置JSON错误吗?如果我输入console.log
data
,它返回:
"id: 123"
ASMX期望有所不同吗?
您正在JSON对象中声明var data
。直接设置data
属性。
还有,你使用JSON.stringify
是不正确的。它应该用于将JavaScript对象转换为JSON字符串。
见下面更新的代码:
$.ajax({
data: JSON.stringify({id: "123"}),
dataType: "json",
url: url
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (result) {},
error: function (xmlHttpRequest, textStatus, errorThrown) {
console.log(xmlHttpRequest.responseText);
console.log(textStatus);
console.log(errorThrown);
}
});