我有一个简单的对象
function MyClass()
{
this.id = null;
// ... Lot of stuff in it
}
MyClass.prototype.parse = function(text)
{
// A parsing function that fills the object
}
如果我尝试使用$.post
$.post("target.php", { QUERY: "query_id", object: obj }, function(data){
console.log(data);
}, 'json');
obj
是MyClass
的实例,我收到错误:text is undefined
如何理解我只想要发送数据,而不是像parse
这样的方法,因为它不会产生任何感觉?
答案 0 :(得分:2)
您可以通过执行
迭代对象的属性for (var prop in obj)
将其与typeof
结合使用以确定属性是否为函数,您可以创建一个函数以将所有非函数属性作为新对象返回。我把这个jsfiddle作为一个例子。
这意味着你可以做
$.post("target.php", { QUERY: "query_id", object: obj.getProperties() }, function(data){
console.log(data);
}, 'json');
答案 1 :(得分:1)
进行Ajax调用时,只能发送字符串。它会自动将数据转换为字符串,但如果不能,就像在您的情况下一样,它会引发错误。在这种情况下,不是发送obj,而是发送obj.data(字符串值)。