Передача переменных в 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);
    }
  });
}
Другие вопросы по тегам