2009-11-18 44 views
0

我写了一个PHP脚本,检查域是否可用于注册或不。帮助我的第一个自己的对象在JavaScript/jQuery

要自动化的过程中,我也写一个js脚本,自动发送AJAX调用到PHP脚本,并告诉用户域名是否是可用的,不提交表单:

$(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的对象,它代表了一个域名。该对象只有一个方法(除构造函数外)向PHP脚本(它返回json)发送AJAX请求。

问题是,Domain.prototype.check()方法不起作用(我没有看到一个警告窗口),我不知道问题出在哪里。当我将AJAX调用放在它工作的方法之外时,这不是问题。

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

#domain是域名的输入字段。

回答

2

你有没有穿过Firebug?在请求发生的地方设置一个断点,并从该点开始。 dn来自你的代码在哪里?

另外,是否有一个特定的原因,您的域名功能在$(document).ready()?它并不需要在那里(你也可以考虑命名你的类)。

+0

啊。我在剧本中将“dn”改写为“name”,并忘记在那里重写它。现在它工作:) – 2009-11-18 20:55:58

+0

@理查德 - 很高兴有帮助。附:你在阅读哪本Resig书? – 2009-11-18 20:57:40

+0

这一个:http://www.amazon.com/Pro-JavaScript-Techniques-John-Resig/dp/1590597273 – 2009-11-18 21:03:44

相关问题