2013-04-22 105 views
1

我有一個腳本,它使用AJAX連接到PHP腳本,該腳本查詢數據庫並返回一些值。其代碼如下:通過JSON AJAX回覆PHP

<script> 
function showUser(str) 
{ 
if (str=="") 
    { 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","ajaxphp.php?ID="+str,true); 
xmlhttp.send(); 
} 
</script> 

<select id="users" name="users" onchange="showUser(this.value)"> 
<option value="">Select a person:</option> 
<!-- PHP populates this dropdown box --> 
</select> 
<div id="txtHint"><b>Selected user info will be listed here.</b></div> 

現在txtHint div將返回任何ajaxphp.php腳本打印的內容。然而這不是很靈活。我想要做的是在ajaxphp.php中創建一個數組,然後使用json_encode()將結果傳遞回去。

我遇到的問題是我不知道如何獲得原始腳本來獲取結果,以便我可以對它們做有用的事情。現在我可以讓它返回一個JSON數組,它將出現在txtHint div中,但我不知道如何讓PHP實際讀取這些信息,以便我可以用它做些事情。

+0

如果你能讓你的PHP返回一個JSON數組,那麼這是你的javascript函數需要改變,而不是php。而不是'document.getElementById(「txtHint」)。innerHTML = xmlhttp.responseText;',你將得到你的代碼來解析這個數組並且做一些有用的事情。 – 2013-04-22 08:28:13

+0

關於另一個話題,我建議你看一下現有的圖書館,例如jQuery,它負責爲您處理很多事情,包括處理瀏覽器差異並將響應解析回javascript數組。 – 2013-04-22 08:28:56

回答

1

嘗試使用jQuery的Ajax ...

$.ajax({ 
     url : 'ajaxphp.php?ID='+str,       
     type: 'get',     
     dataType:'json',     
    success : function(data) { 
     console.log(data); 
    } 
    }); 

數據在成功函數參數是你從PHP返回編碼後的結果。

echo json_encode($result); 

然後,你可以用javascript這樣的東西來訪問它。

data.result1 
data.result2 
data.result3.... 
+0

感謝您的迴應,我已經把所有的事情都處理到最後一點。我對JavaScript並不是很熟悉,所以我不確定如何按照你的說法訪問這些數據。我想用它來填充各種表單域,並且將來可能需要一些處理。有沒有辦法將json編碼結果返回給PHP? – Roy 2013-04-22 08:52:40

+1

試試看這 http://stackoverflow.com/questions/4424518/accessing-json-data-from-jquery 在javascript中處理json對象是非常容易的。 只需在您的瀏覽器中打開控制檯,並查看console.log(data)的結果;命令 – Djomla 2013-04-22 09:13:08

1

也許json_decode()的PHP方法是你想要的解決方案。

http://www.php.net/manual/en/function.json-decode.php

此方法需要一個JSON編碼的字符串(從例如json_encode方法),並且將其轉換成一個PHP變量...所以可以使用該變量類似於對象和簡單地訪問到它的屬性。

這也許其他職位將幫助您:How to decode a JSON String with several objects in PHP?

希望這有助於!再見!

+0

我明白json_decode()存在,問題是我不知道如何將AJAX腳本的結果傳遞給json_decode() – Roy 2013-04-22 08:36:19