【发布时间】:2014-03-05 22:41:16
【问题描述】:
通过 AJAX 请求发送带有函数的普通 javascript 对象会导致调用此函数。 为什么会这样? 发送 JSON 数据时不会出现该问题。 将该对象转换为 JSON 的最佳方法是什么?
我附上了呈现这种行为的示例代码。
var A = (function () {
function A(value) {
this.value = value;
}
A.prototype.getValue = function () {
console.log('getValue');
return this.value;
};
return A;
})();
$(document).ready(function () {
var a = new A(10);
var xhr = $.ajax("http://example.com/", {
data: a,
type: 'post',
error: function (data) {
console.log('error');
},
success: function (data) {
console.log('success');
},
crossDomain: true
});
}
代码的输出是:
getValue
success
【问题讨论】:
-
不会
new A(10);执行那个函数吗? -
哦,等等!不,它不会,但是你为什么要用 ajax 发送一个函数,你期望从中得到什么?
-
jQuery 需要序列化对象,但我不确定为什么会导致
getValue被调用。 -
我不希望它被发送,这就是问题所在。我认为 $.ajax 函数会自动处理。
-
具体处理什么?将什么转换为 JSON?你有一个新的函数实例,你期望得到什么?
标签: javascript jquery ajax json object