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