我有一些要传递给AJAX调用的变量:

例如

var moo = "cow noise";

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


但是,moo返回未定义。

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

最佳答案

我想您的代码可能已经作为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);

10-08 15:50