jquery - 通过 AJAX 将引号传递到 Web 服务时出错

标签 jquery asp.net ajax vb.net

我使用 .ajax 传递数据,以下是我的数据和 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 - 通过 AJAX 将引号传递到 Web 服务时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4542556/

相关文章:

javascript - jQuery 数据表 : data is visible after click on column name

c# - ASP.net MVC,自定义部分 html 帮助程序,打开/关闭 div 不匹配

jquery - 跨域jQuery AJAX文件上传

javascript - jQuery 数据列表

javascript - 为什么 $(document).ready();不明确的?

javascript - 无法使用 Jquery 清空 div

c# - 将 Json 转换为 List<ExpandoObject>

jquery - asp.net c# 添加和删除类 jquery 问题

php - 如何使用 JQuery 设置文本 HTML 输入字段的值?

javascript - 如何将错误从 $.ajax 实例冒泡到 $.ajaxSetup?