爲什麼設置數據不在$的getJSON call.WTF變量工作不在的getJSON 集撥打
設置數據應該是做工精細用的getJSON,嘗試:
$.getJSON("url", { id: id },function (data) {
alert(data);
});
我全局定義跆拳道wariable,但它不從的getJSON獲得價值 功能,爲什麼數據不可訪問。這是通過ajax 函數和async解決的:seto爲false。
這是因爲的getJSON是一個異步調用,這意味着以後的getJSON的代碼,你的情況$(this).html(data);
起犯規等到回調的getJSON你在哪裏設置data
執行。
所以會發生什麼是獲取JSON的請求發送,而不等待響應下一行代碼執行。這種行爲是有用的,因爲整個程序不會等待通過網絡獲取內容的比較長的延遲。在你的情況下,當調用$(this).html(data);
時,它只能保證發送JSON請求,你仍然沒有回覆,並且data
仍然爲空。
您嘗試的一種可能的解決方案是將ajax設置爲「同步」,但不建議這樣做,並且jQuery看起來好像不贊成,因爲它的確是一種糟糕的編程習慣。
如此說來,該溶液是將需要將數據傳輸到的getJson
call back function
或正在使用的異步方法之後進行的邏輯。
也是另一個問題是,爲什麼$(本)。html的()不能內部 的getJSON呼叫進行設置。
getJson有一個回調函數作爲它的最後一個參數,你指的是這個函數,你有this
,因爲不是預期的。
$.getJSON("url", { id: id },function (talentNaziv) {
//this??
});
在JavaScript中這始終是指我們 功能的「所有者」執行,或者說,對象是一個函數的方法。
函數的所有者不是jQuery對象$('a[id=talentNaslov]')
如你想的那麼this
犯規指向它。
我還沒有明白爲什麼你以前使用的方式很尷尬,可能會加上你的意圖和問題會給你更具體的答案或更多的解決問題的方法。
UPDATE
從其他的回答您的評論,它看起來像你正在尋找類似:
$('a.beforeme').each(function(){
var $ele = $(this);
var id = $ele.html();//var id = $(this).html();
$.getJSON('/echo/json/',{id: id},function(data){
data = {msg: "this is it"}; // you will not need it
console.log(data.msg);
$ele.before(data.msg);
});
});
小提琴http://jsfiddle.net/PYhhS/1/
你怎麼 '前' 想將工作?數據的問題在於它異步設置,但您正在同步訪問它。 – sabithpocker 2012-07-25 23:23:46
如何同步意味着呼叫的順序是什麼? – 2012-07-25 23:31:49
我已經添加了一些解釋 – sabithpocker 2012-07-25 23:47:45