прототип фреймворка JavaScript для jquery - PullRequest
2 голосов
/ 20 декабря 2010

Я нашел следующий скрипт, который, по-видимому, написан с использованием прототипа фреймворка javascript.

Event.observe(window, 'load', function() {

    Event.observe( 'btnSubmit', 'click', purchaseCD);

    connectToServer();
});

function connectToServer()
{
    new Ajax.Updater(
        { success: 'CD Count', failure: 'errors' },
        'server_side.php',
        {
            method:     'get',
            onSuccess:  function(transport)
            {
                if (parseInt(transport.responseText)) connectToServer();
            }
    });
}

function purchaseCD()
{
    new Ajax.Updater(
        { success: 'CD Count', failure: 'errors' },
        'server_side.php',
        {
            method:     'get',
            parameters: { num: $('txtQty').getValue() }
    });
}

Кто-нибудь может конвертировать этот скрипт для использования jQuery вместо прототипа? Я вообще не знаю про-тип, поэтому не понимаю.

1 Ответ

2 голосов
/ 20 декабря 2010

Ajax.Updater принимает в качестве параметра 1 два контейнера, в которые он будет обновлять успешный или неудачный ответ запроса на URL-адрес, указанный в параметре 2.

Что делает этот скрипт, так это то, что при загрузке страницы(Я перевел его ниже в DOMReady, что не совсем то же самое, но соглашение jQuery) AJAX-запрос отправляется на server_side.php.Если он получает ответ, который он понимает, он немедленно отправляет другой запрос, чтобы поддержать сеанс.

Это похоже на ужасный дизайн.Если вы собираетесь делать что-то подобное, вам определенно нужно время ожидания между запросами.

Другая вещь, которая не очень удобна в этом сценарии, заключается в том, что каждый запрос AJAX обрабатывается одной и той же страницей - server_side.php- полагаться на различные параметры для получения инструкций о том, какое действие выполнить.Казалось бы, чище просто запрашивать разные страницы для разных действий.

$(function() {
    $('#btnSubmit').click(purchaseCD);
    connectToServer();
});

function connectToServer() {
    $.ajax({
        url: "server_side.php",
        success: function(res) {
            $('#CD Count').html(res);
            if(parseInt(res))
                connectToServer();
        },
        error: function(xhr) {
            $('#errors').html(xhr.responseText);
        }
    });
}

function purchaseCD() {
    $.ajax({
        url: "server_side.php",
        success: function(res) {
            $('#CD Count').html(res);
        },
        data: { num: $('#txtQty').val() },
        error: function(xhr) {
            $('#errors').html(xhr.responseText);
        }
    });
}
...