Javascript 何时在ajax调用中使用JSON.stringify()

Javascript 何时在ajax调用中使用JSON.stringify(),javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我对ajax和JSON的了解有限,但我知道在ajax调用中使用JSON.stringify有时是有用的。下面我有一个ajax调用可以正常工作,而下面的一个带有stringify方法的调用则不起作用。我想知道我是否正确使用了.stringify,如果没有,我应该在ajax中何时使用JSON.stringify,如果有的话。我将MVS与模型、视图和控制器一起使用 这就是我通常如何进行ajax调用,以及如何构建url部分 function AddEquipment(id, name, type

我对ajax和JSON的了解有限,但我知道在ajax调用中使用JSON.stringify有时是有用的。下面我有一个ajax调用可以正常工作,而下面的一个带有stringify方法的调用则不起作用。我想知道我是否正确使用了.stringify,如果没有,我应该在ajax中何时使用JSON.stringify,如果有的话。我将MVS与模型、视图和控制器一起使用

这就是我通常如何进行ajax调用,以及如何构建url部分

    function AddEquipment(id, name, type, description, email) {
        $.ajax({
            url: '@Url.Action("AddEquipment", "Home")' + '/?id=' + id +
                "&name=" + name + "&type=" + type + "&description=" +
                description + "&email=" + email,
            type: "GET",
            cache: false,
            datatype: "JSON",
            success: function(result) {
                //do stuff
            }
        });
    }
下面我尝试使用JSON.stringify,而不是手动构建整个url,但它不起作用

    function AddEquipment(id, name, type, description, email) {
        $.ajax({
            url: '@Url.Action("AddEquipment", "Home")',
            type: "GET",
            cache: false,
            datatype: "JSON",
            data: JSON.stringify({
                "id": id,
                "name": name,
                "type": type,
                "description": description,
                "email": email
            }),
            success: function(result) {
                //do stuff
            }
        });
    }
它附带的控制器方法接受id作为int,而其他所有内容都是字符串。我以前使用过JSON.stringify和混合变量(ints、bools、strings),没有任何问题

非常感谢任何有用的信息


谢谢

这是两个不同的字符串(它们最终计算为的值)。一个不等于另一个。Stringify不会按您的要求为您提供“=”

阅读此内容可在get调用中传递数据

JSON.stringify({
                "id": id,
                "name": name,
                "type": type,
                "description": description,
                "email": email
            }),

url: '@Url.Action("AddEquipment", "Home")' + '/?id=' + id +
                "&name=" + name + "&type=" + type + "&description=" +
                description + "&email=" + email 

我相信jQuery为您完成了繁重的工作。。。只需将数据作为一个对象传递-阅读更多您是否打开了开发人员工具并查看了“网络”选项卡,以查看AJAX调用的URL与此JSON代码的关系?JSON通常通过POST方法发送,然后请求主体将获得数据。如果您想通过查询参数发送,那么您需要字符串化,然后在其上使用encodeURIComponent。然后您可以在服务器端执行相反的操作。在这种情况下,根本不要使用
JSON.stringify
。如果将
数据作为对象传递,jQuery将正确地转换为查询字符串。如果您传递一个字符串,如JSON,则该字符串应该已经是正确的
key=value&k2=v2…
格式,而不是JSON字符串。实际上,它们根本不是对象。@Bergi是的,字符串是!)我说的是url(不管它最终是什么)&JSON.stringify如果您发现了一个与当前问题相同的问题,您可以单击问题下方的标志链接,并将其标记为重复。