2011-02-18 327 views
1

我有一些變量想通過AJAX調用:將變量傳遞給AJAX

例如,

var moo = "cow noise"; 

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

但是,moo回來未定義。

note,我已經離開urldata空故意 - 它們被填充到我的代碼中。

+0

我無法檢測到任何問題。請提供實際的代碼或工作錯誤。 – Exelian 2011-02-18 14:00:28

+0

請包括實際的代碼。你目前的例子,如果完全罰款。 – 2011-02-18 14:05:51

+0

什麼問題。我沒有看到任何錯誤? – 2011-02-18 14:08:22

回答

6

我猜你的代碼可能已被包裹在$(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); 
3

這應該工作,看不出你的代碼有什麼問題。 Live demo

2

只要變量是相同的功能$.ajax -call中定義的,你應該能夠使用moosuccess -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); 
    } 
    }); 
}