Передача переменных в AJAX
У меня есть некоторые переменные, которые я хотел бы передать в вызов AJAX:
например
var moo = "cow noise";
$.ajax({
type: "POST",
url: "",
data: "",
success: function(data){
//return the variable here
alert(moo);
}
});
Тем не мение, moo
возвращается неопределенным.
заметьте, я ушел url
а также data
пусто специально - они заселены в моем коде.
3 ответа
Я думаю, твой код мог быть упакован в $(function(){ ... });
как вещь JQuery. Удалить var
сделает это в принципе window.moo = "cow noise";
Что работает, но загрязняет пространства имен, а это не то, что вы хотите.
Не пытайтесь загрязнить глобальное пространство имен, это затруднит отладку вашего другого кода. Используйте закрытие, которое должно решить вашу проблему:
var moo = "cow noise";
(function(moo){
$.ajax({
type: "POST",
url: "",
data: "",
success: function(data){
//return the variable here
alert(moo);
}
});
})(moo);
Это должно работать, не вижу ничего плохого в вашем коде. Живая демоверсия.
До тех пор, пока переменная определена внутри той же функции, что и $.ajax
-вызовите, вы должны быть в состоянии использовать moo
внутри success
обратный вызов, так как он находится внутри закрытия..
Однако если ajax
-вызов сделан в другом месте, вы должны убедиться, что moo
находится внутри той же области. Это можно сделать так:
function thatDefinesTheVariable () {
var moo = 'cow noise';
makeAjaxCall(moo);
}
function makeAjaxCall (moo) {
$.ajax({
type: "POST",
url: "",
data: "",
success: function(data){
//return the variable here
alert(moo);
}
});
}