当jQuery将字符串传递给Server时,如何去除反斜杠

时间:2013-07-05 09:26:13

标签: c# asp.net-mvc json jquery

我们正在尝试将用户输入作为Json返回到服务器以保存在couchbase中,但我们正在努力将有效的Json发送回服务器,它在“”之间添加(\)。

Json

 var fileToJS = {
         "FormName": "Form1",
         "FormBody": //Nested, complex json continued
    }

这是Jquery的帖子:

$('.sendIt').click(function () {
        alert('sendIt')
        var back = JSON.stringify(fileToJS);
        var url = "../Home/updateFormSave";
        $.post(url, { jsonStuffs: back}, function (data) {
            alert('qq');
        });

});

控制器:

[HttpPost]
        public ActionResult updateFormSave(string jsonStuffs)
        {

            //Save to couchbase
            FormRepository formRep = new FormRepository();
            //string formIdAppended = formID + "-" + User.Identity.Name;
            JavaScriptSerializer invalidJson = new JavaScriptSerializer();
            dynamic validJson = invalidJson.DeserializeObject(jsonStuffs);

            bool JsonForm = formRep.SaveForm("12345", validJson );

            ViewBag.msg = jsonStuffs;
            return View("updateFormSavedSuccess");
        }

帖子有效但是如果我们调试并查看jsonStuffs,它看起来像这样

{\"FormName\":\"Form1\"}

请帮助,我们是否在序列化方面做错了什么?

2 个答案:

答案 0 :(得分:3)

您在调试器中暂停时正在查看该字符串,该字符串将使用反斜杠""来转义引号\

实际的json字符串将是:

  

{“FormName”:“Form1”}

将值打印到控制台窗口,没关系。

答案 1 :(得分:0)

您使用的是JSON.stringify吗?

我有

            var filename = "sample.txt"
            $.ajax({
                ...
                data: { "filename" : JSON.stringify(filename) },
                ...
            });

导致控制器中的\ sample.txt \。

我删除了JSON.stringify

                data: { "filename" : filename },

为我解决了这个问题。