Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以序列化vs json格式发送数据_Javascript_Jquery_Json - Fatal编程技术网

Javascript 以序列化vs json格式发送数据

Javascript 以序列化vs json格式发送数据,javascript,jquery,json,Javascript,Jquery,Json,我正在通过RESTAPI的JavaScript向服务器发送数据(这将在PhoneGap应用程序中,因此使用jQuery而不是任何服务器代码)。我正在构建自己的API,所以我有灵活的选择,但我想知道是否有更好的方法来处理POST数据。我在GET中使用JSON,那么我应该在POST中使用它吗 什么是更好的发送方式 1) 使用serialize方法,然后将其作为数据发送,例如: 或2)将其作为JSON对象发送,如: $.fn.serializeObject = function() { var

我正在通过RESTAPI的JavaScript向服务器发送数据(这将在PhoneGap应用程序中,因此使用jQuery而不是任何服务器代码)。我正在构建自己的API,所以我有灵活的选择,但我想知道是否有更好的方法来处理POST数据。我在GET中使用JSON,那么我应该在POST中使用它吗

什么是更好的发送方式

1) 使用serialize方法,然后将其作为数据发送,例如:

或2)将其作为JSON对象发送,如:

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

$('form').submit(function(e){

    e.preventDefault();

    var form = $(this);

    $.ajax({
        type: 'POST',
        url: form.attr('action'),
        data: JSON.stringify(form.serializeObject()),
        success: function(response){
            // handle response
        },
        error: function(a,b,c) {
            // handle error
        }   
    });

});

您的第二个示例与
$.ajax
.serialize()
在内部所做的差不多,并且POST数据始终以字符串的形式发送,因此这两种方式都不重要。第一个例子看起来更清晰、更容易阅读,因此这是一个优势。

在你的问题中,你没有指明“更好的方式”是什么意思,所以也许你应该编辑你的问题来澄清这一点。例如,您是否特别关注性能、内存使用等

然而,在一个非常普遍的意义上,我想说做这类事情的更好的方法是使用你觉得更容易阅读的方法,因为随着时间的推移,这种方法将更容易调试、扩展和修改。只看客户端代码,您的第一种方法似乎更容易阅读,但如果您对服务器端负责,您也应该考虑这一点。采用您认为总体上更容易维护的方法


最后,您不会在问题中指出是否要发布RESTAPI供其他人使用,但如果是,那么最重要的因素实际上是阅读和理解API有多容易。按照这个标准,您可能应该在GET和POST中都使用JSON。

创建一个空数组,继续将各个表单字段推送到数组JSON。字符串化数组,并通过POST发送

var formData = [];
//Push individual form elements to this aray, preferably in a "key" : "value" format.
var payload = JSON.stringify(formData);
//Then just send it to the server.
JSON对象的好处在于,您可以从各种服务器端语言中读取它,而无需任何努力


此外,您甚至可以在JSON对象中使用“key”:“value”对手动获取服务器上每个字段的值。

除此之外,后者还为整个请求处理添加了额外的反序列化步骤
var formData = [];
//Push individual form elements to this aray, preferably in a "key" : "value" format.
var payload = JSON.stringify(formData);
//Then just send it to the server.