需要Ajax Json提交以允许单引号和双引号

时间:2009-11-05 21:46:08

标签: json

我有这个edit_FName& edit_LName代表asp.net文本框:

$.ajax({
            type: "POST",
            url: document.URL + "/EditName",
            data: "{fName:'" + edit_FName.val() + "'" +
                  ",lName:'" + edit_LName.val() + "'}",

我需要它来允许名字中的单引号和双引号。我有点想我需要使用stringify,但我不能让它按照我想要的方式行事。我试过了:

  $.ajax({
                type: "POST",
                url: document.URL + "/EditName",
                data: "{fName:'" + JSON.stringify(edit_FName.val()) + "'" +
                      ",lName:'" + JSON.stringify(edit_LName.val()) + "'}",
                 etc...

但这根本不起作用,所以我想我不知道我应该如何使用stringify来汇总数据。

3 个答案:

答案 0 :(得分:2)

我认为你想要的是

...
data: JSON.stringify({fName:edit_FName.val(),
                      lName:edit_LName.val()}),
...

答案 1 :(得分:0)

一个问题是你需要围绕fName引用,例如。

$.ajax({
            type: "POST",
            url: document.URL + "/EditName",
            data: "{'fName':'" + edit_FName.val() + "'" +
                  ",'lName':'" + edit_LName.val() + "'}",

答案 2 :(得分:0)

它是如何工作的? 从查看代码开始,我的第一个猜测是语法错误。我通常通过玩REPL解决/弄清楚这些问题。试试Firebug。

如果安装了JSON库,JSON.stringify看起来会起作用。

我认为您可以使用ajax调用的dataType:“JSON”选项来获得相同的结果,结果代码看起来像这样。

$.ajax({
            type: "POST",
            url: document.URL + "/EditName",
            dataType:"json",
            data: {fName:edit_FName.val(),
                   lName:edit_LName.val()}});

手动转义或构建json数据是一个坏主意,即使这被发送回服务器,它将以不同的方式处理。如果您构建此服务器端并将其发送到客户端,则这是脚本注入的绝佳机会