考虑这个对象:
function Cow() {
var self = this;
self.color = "blue";
self.weight=55;
}
Cow.prototype.Speak = function(){
var self=this;
alert('moo. i\'m a ' + self.color + ' cow.');
}
var bessy = new Cow();
当我尝试执行$ .ajax(...)并传入'bessy'作为数据参数时,我遇到了一个问题。我的目的是将数据属性序列化并通过线路传递但它实际上会在ajax调用时执行Speak()。这是一个非常简单的例子,但突出了我遇到的问题。
为了解决这个问题,我创建了一个接受对象并有条件地删除成员(如函数)的函数。然后我将目标对象的副本传递给该函数,并使用我对象的新简化副本进行ajax调用。这看起来真的很麻烦。这是个常见的问题吗?别人怎么处理这个?为此目的创建单独的DTO JS对象似乎有些过分,因为当我添加新属性时,需要在两个地方添加它。
会感激任何想法。
...谢谢 -ben
答案 0 :(得分:4)
您可以通过轻松将对象转换为json字符串来实现。
JSON.stringify(bessy)
会让你拥有bessy变量的json字符串。
将其发送到服务器并使用json_decode
再次转换为对象。