getJSON只返回一个HTMLCollection

时间:2014-01-03 09:21:22

标签: javascript jquery getjson

我正在尝试使用getJSON(类似于jquery.ui.autocomplete)创建电子邮件有效性(即,如果电子邮件尚不存在,则检查数据库)功能。 但是,从回调接收的数据似乎只是当前页面的站点标题,而不是InitSource-function调用的页面。 (我已经检查过了,并且被正确调用了) 有人可以告诉我出了什么问题,为什么我会收到HTMLCollection而不是正确的JSON

这是代码:

$.fn.Functions = {
    InitSource: function () {   
        $.getJSON(this.source, { term: this.getTerm() }, this.response(data));
    },  
    onChange: function () {   
        this.InitSource();
    },  
    response: function (data) {   
        alert(data.result);
    },  
    getTerm: function () {   
        var key = $('.' + this.selector).val();
        if (key.length > 0) return key;
    }   
};

this.source是相对路径:/EmailCheck.aspx 并返回单个值:{"result" : "true"}

有人可以告诉这个新手为什么他在回调中得到完全错误的数据?

1 个答案:

答案 0 :(得分:2)

您正在调用该函数,然后将返回值发送到getJSON调用。使用不带参数的函数名称来发送函数引用而不是调用它。

在使用方法时,您需要使用proxy,以便使用对象的上下文调用它:

$.getJSON(this.source, { term: this.getTerm() }, $.proxy(this.response, this));