【问题标题】:Post object with methods using jquery使用 jquery 方法发布对象
【发布时间】:2015-06-14 05:16:12
【问题描述】:

我有一个简单的对象

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');

objMyClass 的一个实例,我得到一个错误:text is undefined

我如何让它明白我只想要发送数据,而不是像 parse 这样的方法,因为它没有任何意义?

【问题讨论】:

    标签: javascript jquery object post methods


    【解决方案1】:

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

    【讨论】:

    • 由于我的obj包含很多字段,自动转换非常好。有没有办法将它限制在可能的领域?
    • 我很确定这个链接对你很有帮助:stackoverflow.com/questions/1068189/…
    【解决方案2】:

    您可以通过以下方式迭代对象的属性

    for (var prop in obj)
    

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

    http://jsfiddle.net/6w0wj8hj/

    这意味着你可以这样做

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

    【讨论】:

    • 不错!我最终做的是将getProperties 方法放在Postable 类中,并让其他类继承它:)
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多