Передача переменных в AJAX - PullRequest
1 голос
/ 18 февраля 2011

У меня есть некоторые переменные, которые я хотел бы передать в вызов AJAX:

, например

var moo = "cow noise";

$.ajax({
    type: "POST",
    url: "",
    data: "",
    success: function(data){
            //return the variable here
            alert(moo);
    }
});

Однако moo возвращается неопределенным.

note , я специально оставил url и data пустыми - они заполнены в моем коде.

Ответы [ 3 ]

8 голосов
/ 18 февраля 2011

Полагаю, ваш код мог быть заключен в $(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);
4 голосов
/ 18 февраля 2011

Это должно работать, не вижу ничего плохого в вашем коде. Живая демоверсия .

2 голосов
/ 18 февраля 2011

, пока переменная определена внутри той же функции, что и $.ajax -call, вы можете использовать moo внутри success -callback, так как она находится внутри замыкания.

Однако, если 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);
    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...