更改jQuery的默认Serializer

时间:2014-03-03 01:20:18

标签: javascript jquery json

jQuery中是否有办法将$.ajax从默认更改为序列化作为表单的已发送数据以将其序列化为JSON?

而不是以下内容:

$.post("/my/url/endpoint", JSON.stringify(obj))

我想做一次这样的事情,所以自动发生:

$.defaultSeralizer = JSON.stringify

从现在开始,我将能够:

$.post("/my/url/endpoint", obj)

2 个答案:

答案 0 :(得分:1)

您可以将.toJson原型添加到将为您执行此操作的Object。它不会为你节省大量的打字,但取决于你的命名。

Object.prototype.toJson = function(){
   var jsonValue = JSON.stringify(this);
   alert(jsonValue);
}

var person = {"name": "John Smith", "age": 35, "location": "California"};

person.toJson();

Fiddle of it in action

答案 1 :(得分:1)

如果没有真正过度编写一些jQuery核心,就无法做到这一点,这将永远导致问题。最好的选择是为jQuery添加另一个ajax助手,它可以满足您的需求。

以下是https://stackoverflow.com/a/19516921/823942示例。

请记住,某些浏览器缺少本机JSON支持。