Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery使用方法发布对象_Javascript_Jquery_Object_Post_Methods - Fatal编程技术网

Javascript 使用jquery使用方法发布对象

Javascript 使用jquery使用方法发布对象,javascript,jquery,object,post,methods,Javascript,Jquery,Object,Post,Methods,我有一个简单的对象 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 }, fu

我有一个简单的对象

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
的一个实例,我得到一个错误:
文本未定义


我如何让它明白我只希望发送数据,而不是像
parse
这样的方法,因为它不会产生任何意义?

在执行Ajax调用时,您只能发送字符串。它会自动将数据转换为字符串,但如果不能,就像在您的例子中一样,它会抛出一个错误。在这种情况下,不发送obj,而是发送obj.data(字符串值)

您可以通过执行以下操作来迭代对象的属性

for (var prop in obj)
将其与
typeof
结合使用以确定属性是否为函数,您可以创建一个函数以将所有非函数属性作为新对象返回。我以这个jsfiddle为例

这意味着你可以这样做

$.post("target.php", { QUERY: "query_id", object: obj.getProperties() }, function(data){
    console.log(data);
}, 'json');

由于我的obj包含很多字段,因此自动转换非常好。有没有办法把它限制在可能的领域?我很确定这个链接会对你很有帮助:很好!我最后做的是将
getProperties
方法放在
Postable
类中,并使其他类从中继承:)