2012-03-05 110 views
0

如何使用jquery將接收到的數據從遠程php文件存儲到變量中。 我收到使用如何將接收到的數據存儲在變量中jquery

$.post("test.php", {query: ""+inputString+""}, function(data){ 
       alert(data); 
      }); 
     } 

它的工作,我可以在一個變量接收數據的功能(數據)內,但我可以瘡的數據和其他功能使用它的一些東西一樣

var data = $.post("test.php", {query: ""+inputString+""}); 
+0

可能重複[ jQuery ajax函數工作,但不能正確返回變量](http://stackoverflow.com/questions/3101991/jquery-ajax-function-works-but-cant-return-the-variable-correctly) – bfavaretto 2012-03-05 14:51:47

回答

2

你不能這麼做,因爲AJAX是異步的,這意味着結果只在成功回調中可用,而回調可能比實際的$.post調用晚得多。因此,不是試圖將結果存儲到變量中,而是使用成功回調,它是唯一可靠的地方,以消費AJAX請求的結果來調用某些其他方法,並對這些結果執行一些處理:

$.post("test.php", { query: inputString }, function(data) { 
    someFunction(data); 
}); 
0
數據

您應該在回調函數中使用另一個函數data

0

只是將其設置爲一個變量。

var storedData; 
$.post("test.php", {query: ""+inputString+""}, function(data){ 
       storedData = data; 
      }); 
     } 
0

您需要定義功能

var backData = ''; 
$.post("test.php", {query: ""+inputString+""}, function(data){ 
    alert(data); 
    backData = data; 
}); 

然後你就可以在其他功能

+2

不幸的是,你永遠不會知道何時爲這個'backData'變量賦值以便使用它。唯一可靠的地方是成功回調。 – 2012-03-05 14:52:24

+1

你可以通過設置'async:false'來使用jQuery提供的同步ajax文章。 – 2012-03-05 14:54:45

1
var myResult; 
$.post('ajax/test.html', function(data) { 
     myResult=data; 
     $(body).trigger('myAjaxComplete') 
}); 

使用backData以外的變量,但與問題是,AJAX是異步,所以你永遠不知道什麼時候AJAX完全完成。您可以觸發上述的自定義事件並收聽。所以,你會知道的AJAX已經完成,你必須肯定的數據:

$(body).on('myAjaxComplete',function(){ 
     //do whatever you like to do with your data 
}); 

或者另一種方式是打電話與您的數據的函數:

$.post('ajax/test.html', function(data) { 
     myAjaxisDoneSoContinue(data); 
}); 
0

這裏的問題是,function (data)callback這是在事件上調用(當數據被盜版時)。你看,javascript是異步語言,這意味着一些函數不是一個接一個地調用,而是一些事件。你應該用你的數據回調功能可按裏面,並把所有的邏輯,這取決於它的回調

$.post("test.php", {query: ""+inputString+""}, function(data){ 
      // manipulate date, call another functions, etc; 
     }); 
    } 
0

中創建您在其中存儲您接收到的數據,你的情況後外的全局變量構建

對於較大的項目,爲每個變量或常量創建一個單獨的腳本可能很有用,此腳本應與其他腳本包含在同一級別。這樣你有當你需要與他們一起工作已經定義了所有變量

同樣的事情可以做常量讓他們在同一個地方,而不是瀏覽低谷的項目找到他們的

相關問題