2012-08-02 15 views
1

請原諒我,如果我在這裏做一個愚蠢的錯誤......但我有點新的PHP ... 我一直停留在這個長時間。 我已經嘗試了幾種方法,但我只能通過ONe錶行,不是多行PHP無法JSON數組傳遞給jQuery的

我甚至試着用下面的方法,但我着陸了相同的錯誤。 http://www.electrictoolbox.com/json-data-jquery-php-mysql/

這裏就是我想要做的事:

1)使用JQuery Ajax調用,來從服務器的數據製作。

$.ajax({          
    url: 'test.php',     //the script to call to get data   
    data: "",       
    dataType: 'json',    //data format  
    success: function(data)   //on recieve of reply 
    { 
    //use "data" 
    } 

2)使用PHP從MySql數據庫獲取表數據。

$result = mysql_query("SELECT username,characterType FROM usertable"); 

3)將所有行作爲JSON數據傳遞迴調用函數。

//This works , Returns one row and I am able to get the result back at AJAX end 
$array = mysql_fetch_row($result);       
echo json_encode($array); 

mysql_fetch_assoc($result)失敗,出現以下錯誤:

XML Parsing Error: no element found Location: moz-nullprincipal:{6b1***-****somecrap numbers****-***86} Line Number 17, Column 3: 

$array = mysql_fetch_assoc($result);       
echo json_encode($array); 

我甚至用mysql_fetch_array($result, MYSQL_NUM)作爲其他相關問題提出試過,但我不能要解決的問題。

任何幫助是極大的讚賞。

============

UPDATE:

我可能是錯的,但只是想知道,如果這可能是可能性或不...燦這是一個本地安裝相關的問題?配置錯誤..?

我使用「XAMPP安裝」[Apache/MySQL/Tomcat ...捆綁在一個包中]完成了我的本地主機設置...當我運行文件爲「PHP應用程序」時,它運行得很好......我能夠得到「所有行」但是當我在我的apache服務器上部署代碼時,它不會運行......整個php文件作爲響應,並帶有「XML解析錯誤」[我使用螢火蟲跟蹤響應]

感謝 Pranav

+0

你看從PHP輸出的JSON?它是什麼樣子的?具體來說,第17行字符3是什麼樣的?在任何情況下,它看起來都不像_assoc返回多行 - 它以不同的形式返回一行。您可能需要循環訪問一次獲取行的結果,以便在PHP中構建數組,然後對其進行序列化。 – Rup 2012-08-02 23:17:41

+0

你可以發佈更多的錯誤腳本嗎? – liz 2012-08-02 23:19:03

+0

我已經發布了所有導致該問題的腳本.. $ con = mysql_connect($ host,$ user,$ pass); $ dbs = mysql_select_db($ databaseName,$ con); $ result = mysql_query(「SELECT username,characterType,totalPayoff FROM $ tableName」); $ array = mysql_fetch_assoc($ result); echo json_encode($ rows); – Pranav 2012-08-02 23:22:43

回答

0

有幾件事情,這裏要注意:

如RUP提到,$array = mysql_fetch_row($result);只返回單行。

的另一件事是,test.php的目前不返回一個JSON對象;看看發生了什麼,它有助於評論出dataType: 'json',並使用console.log(data);來查看返回的內容。你可能響應看起來是這樣的:

["someUsername","someChartype"] 

你期待的對象的格式可能更喜歡的東西:

[{"username":"foo","chartype":"admin"}, 
{"username":"bar","chartype":"user"}, 
{"username":"fum","chartype":"guest"}] 

爲了讓關聯數組的格式,請使用mysql_fetch_assoc($result)代替;這將使

{"username":"someUsername","chracterType":"someChartype"} 

總之,升級你的PHP代碼:通過您的結果

  • 循環,將它們推到一個數組。
  • 編碼末

    $outputArray = array(); 
    while($row = mysql_fetch_assoc($result)){ 
        array_push($outputArray, $row); 
    } 
    echo json_encode($outputArray); 
    

整個陣列看看How to build a JSON array from mysql database獲取更多信息。另外,正如其中一個答案所述,其值使用PDO而不是mysql_*

0

不要以@Tuanderful的形式手動編寫JSON字符串。讓json_encode()處理 - 只是給它正確的數據。嘗試是這樣的:

$records = array(); 

while ($record = mysql_fetch_assoc($result)) { 

    $records[] = $record; 

} 

echo json_encode($records); 
+0

我也試過這個了..請參閱關於這個問題的更新信息..我想我錯過了別的東西 – Pranav 2012-08-03 17:55:10

+0

你有沒有XML聲明在你的PHP腳本中使用''<?xml version =「1.0」?>'或類似的東西(例如'<?'),並且啓用了'short_open_tag'配置選項?(運行'phpinfo()'或' ini_get('short_open_tag')'找出。) – JMM 2012-08-03 22:07:25

0

嗯,我會喜歡這樣的:

$.ajax({          
    url: 'test.php',     //the script to call to get data   
    //data: "",       
    dataType: 'json',    //data format  
    success: somevar 
}) 



var somevar = function(data)   //on recieve of reply 
    { 
    //use "data" 
    somevar2 = jQuery.parseJSON(data) 
    //now You can enter each row/cell from db(/php) like this 
    // somevar2[0] would be the first row from php 
    //if You want to do something with every line You can use: 
    //$.each(somevar2, function(key,value){ 
    //$('#divname').html(value.cellnameoftable) 
    } 

我希望這將有助於;)