当前位置: 首页 > 面试题库 >

jQuery:如何停止转义用于POST数据的JSON字符串的AJAX函数

尹承泽
2023-03-14
问题内容

我需要将所有输入从表单序列化为JSON字符串。 借助本文,我可以成功创建一个有效的字符串,如下所示:

{"input01":"value01","input02":"value02","input03":"value03"}

但是,当我尝试使用字符串通过jQuery的Ajax函数发布数据时,似乎在字符串中添加了反斜杠,从而导致使用GET而不是POST发送JSON字符串。加载的PHP页面返回以下$_GET数组:

[{\"input01\":\"value01\",\"input02\":\"value02\",\"input03\":\"value03\"}] =>

alert()在AJAX函数中使用JSON字符串之前,我已经测试过JSON字符串以确认结构正确。
另外,如果我只是手动输入有效的JSON字符串,则AJAX会正确发布数据。

我的代码如下:

var dataJSON = $.toJSON($('#form').serializeObject());
alert(dataJSON);

$.ajax({
    type: "POST",
    url: "ajax.php",
    data: 'Query01=01&Query02=02',
    dataType: 'json',
    success: function(data){
       if (data==1){
         $('#wrap').load('ajax.php',dataJSON);
       }
    }
});

问题答案:

在搜索Google和jQuery网站之后,我个人得出结论,该$.load函数将转换作为查询字符串传递给它的任何变量(正如上面概述的我的原始问题)。如果您希望通过它传递JSON字符串,则必须手动输入。

为了解决这个问题,我改用了低级$.ajax函数。使用此方法的优势意味着我也可以使用标准.serialize()函数发送POST数据,而不必将表单数据转换为JSON。

我的最终代码:

var formData = $('#form').serialize();

$.ajax({
     type: "POST",
     url: "ajax.php",
     data: 'Query01=01&Query02=02',
     dataType: 'json',
     success: function(data){
          if (data==1){
               $.ajax({
                    type: "POST",
                    url: "ajax.php",
                    data: formData,
                    success: function(html){
                         $("#wrap").replaceWith(html);
                    }   
               });
          }
     }
});

如果其他人有解决方案,请发表评论。



 类似资料:
  • 问题内容: 远程服务器(不在我的控制范围内)发送一个JSON字符串,该字符串具有所有转义的字段名和值。例如,当我执行JSON.stringify(res)时,结果如下: 现在,当我执行alert(res.orderId)时,它说未定义。我认为是因为逃脱了。我该如何解决? 问题答案: 假设这 是显示 的实际值,请考虑: 请注意将JSON.stringify应用于值(这是一个 字符串 ,因为JSON

  • 问题内容: 手动创建JSON数据时,应如何转义字符串字段?我应该用什么样的Apache Commons Lang中的,或者我应该使用? 问题是,当我使用时,它不会转义引号,并且当我将整个字符串包装在一对s中时,将生成格式错误的JSON。 问题答案: 理想情况下, 找到一种使用您的语言的JSON库 ,您可以向该 库 提供一些适当的数据结构, 并使它担心如何转义 。它会让您保持头脑清醒。如果出于某种原

  • 问题内容: 我从公共API接收到一个JSON对象,该对象本身具有一个转义的JSON字符串。 我如何将此属性转换为实际的JSON对象(未转义),以便使用NewtonSoft Json.NET反序列化整个响应? 问题答案: 这是我根据 Sam 的答案使用的可行解决方案:

  • 问题内容: 而不是从json字符串中使用$ .parseJSON,我需要获取对象并将其存储在变量中作为代表json的字符串。 (我正在处理的库期望使用格式错误的json类型,因此我需要弄乱它才能使其正常工作。) 最好的方法是什么? 问题答案: 编辑: 您应该使用Douglas Crockford的json2.js库,而不是实现下面的代码。它提供了一些额外的功能以及更好/更旧的浏览器支持。 从以下位

  • 问题内容: 更新 :一旦查看了Firebug中的问题,我立即发现了我的错误。这是我必须以某种方式删除的令人尴尬的双引号。我一直在使用Chrome的开发人员窗口。非常抱歉耗尽您的资源。但是,经验教训!(“我希望。) 对我来说,转义要发送到服务器的html字符的最佳方法是什么?我正在使用jQuery,.ajax()和jsonp。 我正在编写一个书签,该书签将当前页面的html的一部分发送到我的服务器。

  • 问题内容: 手动创建数据时,应如何转义字符串字段?我应该用什么样的中的或者我应该使用 问题是,当我使用时,它不会转义引号,并且当我将整个字符串包装在一对s中时,将生成格式错误的JSON。 问题答案: 理想情况下,找到一种使用你的语言的JSON库,你可以向该库提供一些适当的数据结构,并使它担心如何转义。它会让你保持头脑清醒。如果出于某种原因你没有使用你的语言的库,或者你不想使用一个库(我不建议这样做