通过AJAX发送JavaScript对象有效,JSON不起作用吗?

时间:2019-09-17 18:40:14

标签: javascript jquery json ajax rest

我正在尝试通过AJAX发送数据,我在网上阅读的大多数地方都说我需要将其作为JSON发送。但是,如果我尝试将其作为JavaScript对象发送,则它实际上可以工作,而如果我尝试将其作为JSON发送,则会给我一个CORS错误(但这是另一个主题:这里是问题的链接:API Gateway CORS: no 'Access-Control-Allow-Origin' header (NON-PROXY))。

我想我的问题是,将数据作为与JSON相对的JavaScript对象发送对我来说是否完美?彼此相比有好处吗?

示例:

这有效:(将数据作为JS对象发送):

$("#xform").submit(function (event) {
                event.preventDefault();
                var obj = { xnumber: 1 };
                $.ajax({
                    type: 'GET',
                    url: 'adddresshere',
                    data: obj,
                    dataType: 'json',
                    contentType: 'application/json',
                }).done(function (result) {
                    table.clear();
                    table.rows.add(result).draw();
                });
            });

这不起作用-(将数据作为JSON发送)

$("#xform").submit(function (event) {
                event.preventDefault();
                var obj = { xnumber: 1 };
                var myJSON = JSON.stringify(obj);
                $.ajax({
                    type: 'GET',
                    url: 'adddresshere',
                    data: myJSON,
                    dataType: 'json',
                    contentType: 'application/json',
                }).done(function (result) {
                    table.clear();
                    table.rows.add(result).draw();
                });
            });

所以我可以从现在开始一直坚持发送JS对象(只要它现在对我有用)吗?

2 个答案:

答案 0 :(得分:-1)

简答是。

说明: 当在线博客说您需要传递JSON对象时-它们意味着您需要发送Java Script Object Notation对象。像这样写时:

var obj = { xnumber: 1 }

您已经在创建JSON对象。这是通过ajax调用发送的好方法。当您执行JSON字符串化操作时,它基本上会将上述JSON转换为字符串。因此,服务器无法将其视为JSON对象,并且将失败。

答案 1 :(得分:-2)

您的JavaScript对象是反序列化的JSON。正如Heretic Monkey所指出的那样,JSON.stringify会序列化您的JavaScript对象,以通过网络发送。