2011-12-22 2 views
1

У меня есть код ниже, который захватывает некоторые html из запроса AJAX, а затем скрывает одну строку таблицы и показывает другую, но даже если var, которую я создаю, чтобы удерживать html (quick_edit_html) доступен после выполнения функции AJAX (проверяется, помещая его в поле предупреждения), Firebug сообщает мне, что он не существует, когда я пытаюсь использовать его в следующей функции (которая не работает до тех пор, пока не будет выполнен запрос AJAX) ,AJAX/JQuery - var не существует

Любые идеи о том, где я ошибаюсь?

/** Run the AJAX request to grab the qucik edit html */ 
var load_quick_edit = jQuery.post(MyAjax.ajaxurl, data, function(response){ 
    var quick_edit_html = response; 
}); 

/** Display the correct quick edit row */ 
load_quick_edit.done(function(){ 

    /** Hide the row that is to be edited */ 
    jQuery('tr#display-'+slug).hide(); 

    /** Show the quick edit row that the user has requested */ 
    jQuery('tr#quick-edit-'+slug).show(); 
    jQuery('tr#quick-edit-'+slug).html(quick_edit_html); 

}); 

Спасибо.

ответ

2

Ваш var объявлен в анонимной функции обратного вызова ajax. Это позволяет использовать переменную var для этой функции, что означает, что ее нельзя получить нигде.

Просто объявите var вне ваших функций.

var quick_edit_html; 

/** Run the AJAX request to grab the qucik edit html */ 
var load_quick_edit = jQuery.post(MyAjax.ajaxurl, data, function(response){ 
    quick_edit_html = response; 
}); 

/** Display the correct quick edit row */ 
load_quick_edit.done(function(){ 

    /** Hide the row that is to be edited */ 
    jQuery('tr#display-'+slug).hide(); 

    /** Show the quick edit row that the user has requested */ 
    jQuery('tr#quick-edit-'+slug).show(); 
    jQuery('tr#quick-edit-'+slug).html(quick_edit_html); 

}); 
+0

Спасибо - подумал, что это будет что-то глупо! –

1

quick_edit_html должен вышел за рамки на тот момент .. Вы можете попробовать либо хранить его в глобальном масштабе или объеме прототипа (с этим ключевым словом)

+0

Мне было бы интересно увидеть реализацию, которая использует ключевое слово this. Я всегда полагаюсь на глобальную область или пространство с именами, но альтернативные методы хороши. –

+0

Спасибо, что отсортировал его. –

2

Он не доступен, потому что это из объем. Заявить об этом за пределами post():

+0

Спасибо, это трюк. –

Смежные вопросы