【发布时间】:2011-05-31 08:44:03
【问题描述】:
我正在使用 .ajax 传递数据,这里是我的 data 和 contentType 属性:
data: '{ "UserInput" : "' + $('#txtInput').val() + '","Options" : { "Foo1":' + bar1 + ', "Foo2":' + Bar2 + ', "Flags":"' + flags + '", "Immunity":' + immunity + '}}',
contentType: 'application/json; charset=utf-8',
服务器端我的代码如下所示:
<WebMethod()> _
Public Shared Function ParseData(ByVal UserInput As String, ByVal Options As Options) As String
用户输入很明显,但Options 结构如下:
Public Structure Options
Dim Foo1 As Boolean
Dim Foo2 As Boolean
Dim Flags As String
Dim Immunity As Integer
End Structure
当$('#txtInput') 不包含双引号时一切正常,但如果它们存在,我会收到错误消息(对于 asd 的输入):
{"Message":"Invalid object passed in, \u0027:\u0027 or \u0027}\u0027 expected. (22): { \"UserInput\" : \"asd\"\",\"Options\" : { \"Foo1\":false, \"Foo2\":false, \"Flags\":\"\", \"Immunity\":0}}","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
知道如何避免这个错误吗?此外,当我直接使用引号传递相同的输入时,它工作正常。
【问题讨论】:
标签: jquery asp.net ajax vb.net