Помогите с моим первым собственным объектом в JavaScript / jQuery - PullRequest
0 голосов
/ 18 ноября 2009

Я написал скрипт PHP, который проверяет, доступен ли домен для регистрации.

Для автоматизации процесса я также написал 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;

    });

});

Как видите, я создал объект с именем Домен, который представляет собой доменное имя. У объекта есть только один метод (помимо конструктора), который отправляет запрос AJAX в скрипт PHP (который возвращает json).

Проблема в том, что метод Domain.prototype.check () не работает (у меня нет окна предупреждения), и я не знаю, в чем проблема. Когда я размещаю вызов AJAX вне метода, он работает, так что это не проблема.

Я новичок в ООП, поэтому, возможно, я использовал какой-то неправильный синтаксис для написания объекта Domain (сейчас я читаю книгу Джона Резига об ООП в JavaScript).

#domain - это поле ввода для доменных имен.

1 Ответ

2 голосов
/ 18 ноября 2009

ты прошел через Firebug? Установите точку останова в точке, в которой сделан запрос, и перейдите от этой точки. Откуда взято dn в вашем коде?

Кроме того, есть ли конкретная причина, по которой функция вашего домена находится в $(document).ready()? Это не обязательно должно быть там (вы можете рассмотреть пространство имен для ваших классов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...