在JavaScript / jQuery中帮助我自己的第一个对象

时间:2009-11-18 20:38:39

标签: javascript jquery ajax oop

我编写了一个PHP脚本,用于检查域是否可以注册。

为了自动化这个过程,我还编写了一个js脚本,它自动向PHP脚本发送AJAX调用,并告诉用户域是否可用,而不提交表单:

$(document).ready(function() {

    function Domain() {    
        this.name = '';
        this.dotComRegistered = 1;
        this.dotNetRegistered = 1;
        this.dotOrgRegistered = 1;
    }

    Domain.prototype.check = function(input) {
        this.name = input;

        if (this.name.length >= 3 && this.name.length <= 63) {        
            $.get('check.php', { d : this.name }, function(json) {

                alert(json);

                this.dotComRegistered = $.evalJSON(json).com;
                this.dotNetRegistered = $.evalJSON(json).net;
                this.dotOrgRegistered = $.evalJSON(json).org;

            });
        }
    }

    var domain = new Domain();

    var input = ''

    $('#domain').keyup(function() {

        input = $('#domain').val();
        domain.check(input);

    });

    $('form').submit(function() {

        input = $('#domain').val();
        domain.check(input);
        return false;

    });

});

如您所见,我创建了一个名为Domain的对象,它代表一个域名。该对象只有一个方法(除了构造函数)将AJAX请求发送到PHP脚本(返回json)。

问题是Domain.prototype.check()方法不起作用(我没有得到警报窗口),我不知道问题出在哪里。当我将AJAX调用放在方法之外时,它就可以了,所以这不是问题。

我是一个OOP初学者,所以也许我使用了一些错误的语法来编写Domain对象(我​​现在正在阅读John Resig关于JavaScript中的OOP的书)。

#domain是域名的输入字段。

1 个答案:

答案 0 :(得分:2)

你带着Firebug走了吗?在请求的位置设置断点并从该点开始逐步执​​行。 dn来自您的代码在哪里?

此外,您的域名功能是否在$(document).ready()?它实际上并不需要在那里(您也可以考虑为您的类命名)。