2

我正在通过 JavaScript 将数据发送到服务器以获取 REST API(这将在 PhoneGap 应用程序内,因此使用 jQuery 而不是任何服务器代码)。我正在构建自己的 API,所以我有灵活的选择,但我想知道是否有一种首选的方式来处理 POST 数据。我将 JSON 用于 GET,那么我应该将它用于 POST 吗?

发送它的更好方法是什么?

1)使用序列化方法,然后将其作为数据发送,例如

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

    e.preventDefault();

    var form = $(this);

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

});

或 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
        }   
    });

});
4

3 回答 3

2

你的第二个例子在内部做了很多事情,$.ajax并且.serialize()POST 数据总是作为字符串发送,所以它不应该以一种或另一种方式真正重要。第一个例子看起来更简洁,更容易阅读,所以这是一个优势。

于 2013-02-17T14:33:55.010 回答
2

创建一个空数组,继续将各个表单字段推送到数组,JSON.stringify 数组,并通过 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' 对来手动获取服务器上每个字段的值。

于 2013-02-17T14:45:22.323 回答
1

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

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

最后,您没有在问题中说明您是否要发布 REST API 以供其他人使用,但如果您是,那么最重要的因素实际上是阅读和理解 API 的难易程度。通过这种方式,您可能应该在 GET 和 POST 中都使用 JSON。

于 2013-02-17T14:41:23.687 回答