Использование ближайшей команды в случае успеха ajax callback - PullRequest
1 голос
/ 20 августа 2009

У меня есть несколько форм с id = # REQUESTFORM. Чтобы получить правильную информацию при отправке данных, я использую ближайшую команду. Но та же команда не работает, когда я попытался использовать ее в случае успешного вызова ajax. Как еще я могу получить и распечатать ответ сервера в правильной форме?

    $("[name='respond']").live('click', function() { 
        $("[name='action']").val($(this).val());
            $.ajax({
                type: "POST",
                data: $(this).closest('#REQUESTFORM').serialize(),
                url: "content/requests/index.cs.asp?Process=RespondRequests", 
                success: function(output) { 
                $(output).closest('#REQUESTFORM').html(output)
                },
                error: function(xhr){
                    alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
                }
            }); 

1 Ответ

2 голосов
/ 20 августа 2009

Выходные данные, поступающие в функции успеха, относятся к данным, полученным с сервера, которые я не вижу, так или иначе, они связаны с вашей DOM. Есть очень простой трюк, на который вы хотите сослаться на #REQUESTFORM:

...live('click', function() {
    $("[name='action']...
    // REFERENCE TO the REQUESTFORM
    var requestForm = $(this).closest('#REQUESTFORM');

    $.ajax({
        type: "POST", 
        data: requestForm.serialize(),
        ...
        success: function(output) {
            requestForm.html(output);
        ...

Поскольку область действия функции JS равна , где определено, а не , где используется, переменная requestForm будет доступна для функции успеха, даже если функция привязки события завершена.

И последнее, в вашем случае, форма, на которую вы ссылаетесь с ID, которая предполагает, что она уникальна для всего DOM, вы можете использовать $ ('# REQUESTFORM') вместо ближайшего.

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