将变量传递给AJAX

时间:2011-02-18 13:54:51

标签: javascript jquery ajax

我想将一些变量传递给AJAX调用:

e.g。

var moo = "cow noise";

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

但是,moo未定义。

note ,我故意将urldata留空 - 它们填充在我的代码中。

3 个答案:

答案 0 :(得分:8)

我猜你的代码可能已作为jQuery包装在$(function(){ ... });中。删除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);

答案 1 :(得分:4)

这应该有效,看不出代码有什么问题。 Live demo

答案 2 :(得分:2)

只要变量在与$.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);
    }
  });
}