2012-01-23 33 views
1

我不明白成功函數如何在使用jquery的$ .ajax調用中工作。

例如

$.ajax({ 
    type: "POST", 
    url: "ajax.php", 
    data: "function=1", 
    success: function(data,response,jqxhr){ 
     useReturnData(data /* ??? not sure how to use the data var */); 
    } 
}; 

ajax.php:

<?php 
     if ($_REQUEST['function'] == '1'){ 
      $string = "this is the data i want to return and use"; 
     } 
?> 

如何使用該功能的成功中的數據?沒有哪裏可以解釋數據參數是什麼,他們只是模糊地使用它。

另一方面的問題,是數據:「function = 1」與數據有關,作爲成功函數的參數嗎?

回答

2

data變量包含你的PHP文件的輸出,因此,如果在你的PHP文件中你做:

echo "<p>success</p>"; 

data將包含<p>success</p>

在你的榜樣,你會改變你的PHP文件:(?DIV)

<?php 
     if ($_REQUEST['function'] == '1'){ 
      $string = "this is the data i want to return and use"; 
     } 

     // other stuff... 

     echo $string; 
?> 
2

參數data的內容取決於響應的類型。如果Content-Typeapplication/json,那麼它被解析爲JSON。如果是text/html或類似的內容,則爲HTML。就你而言,看起來你正在返回文本。如果您使Content-Type標頭text/plain或類似,那麼data應該只是一個字符串。

要回答第二個問題,Ajax請求的data屬性有所不同;它指定發送的數據請求。換句話說,如果你有一個GET請求,它就是查詢字符串,如果它是POST請求,則發佈「form」變量。

+0

這是更好的... – jeroen

1

data無論是通過服務器端腳本返回,所以在這種情況下,將

this is the data i want to return and use 

提供了if()條件得到滿足。

沒有人真的說什麼data包含,因爲它可以包含各種不同的東西,雖然它總是一個字符串。有時它是HTML,有時它是JSON,有時只是一個返回消息。

在你的情況,data將只是一個字符串爲您提供呼應串出在你的服務器端腳本

0

最簡單的方法是將數據加載到一些佔位元素 E.G.

$.ajax({ 
    type: "POST", 
    url: "ajax.php", 
    data: "function=1", 
    success: function(data,response,jqxhr){ 
     $('div.selector').load(data); 
    } 
}; 
+0

無論你給出的網址爲['.load()'](http://api.jquery.com/load/)直接(不阿賈克斯()調用需要的話),或者使用'.html()'進行注入。這似乎有點混雜起來。 – mario

相關問題