【发布时间】:2017-01-02 11:18:43
【问题描述】:
这是我在网络服务中的网络方法(示例项目的本地).asmx
[WebMethod]
public List<test1> GetLstB(string s)
{
test1 t;
List<test1> lstB = new List<test1>();
t = new test1()
{
itm1 = "aaa" + s,
itm2 = "bbb" + s
};
lstB.Add(t);
t = new test1()
{
itm1 = "ccc" + s,
itm2 = "ddd" + s
};
lstB.Add(t);
return lstB;
}
public class test1
{
public string itm1 { get; set; }
public string itm2 { get; set; }
}
这里是调用这个 webmethod 的 JQuery
$(function () {
$("[id*=Button4").click(function () {
var x = 'xyz';
$.ajax({
type: "POST",
url: "ServiceCS.asmx/GetLstB",
data: "{'" + x + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
for (var i in result.d) {
alert(result.d[i].itm1 + "--" + result.d[i].itm2);
}
},
error: function (r) {
alert(r.responseText);
console.log("AJAX error in request: " + JSON.stringify(r, null, 2));
},
failure: function (r) {
alert(r.responseText);
}
});
return false;
});
});
我在没有传递参数的情况下运行了这个 JQuery 函数 (var x = 'xyz';),并且 web 方法返回了我在 JQuery 中迭代的对象列表,没有任何问题。但是后来我决定尝试将参数传递给 webmethod(也尝试过“xyz”),现在我得到了这个错误——如何传递参数 var x = "xyz";对 web 方法正确吗?
"Message\":\"传入的对象无效,应为\u0027:\u0027 或\u0027}\u0027。(7): {\u0027xyz\u0027}\",\"StackTrace\":\" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)\r\n 在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n 在 System.Web.Script.Serialization.JavaScriptObjectDeserializer。 BasicDeserialize(字符串输入,Int32 depthLimit,JavaScriptSerializer 序列化程序)\r\n 在 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer 序列化程序,字符串输入,类型类型,Int32 depthLimit)\r\n 在 System.Web.Script .Serialization.JavaScriptSerializer.Deserialize[T](字符串输入)\r\n 在 System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext 上下文,JavaScriptSerializer 序列化程序)\r\n 在 System.Web.Script.Services.RestHandler .GetRawParams(WebServiceMethodData methodDat
【问题讨论】:
标签: c# jquery asp.net web-services