2012-03-16 37 views
1

我有這個問題我一直在掙扎了一段時間,現在我需要幫助: 我有以下陣列

array(2) { 
    [0]=> 
    object(stdClass)#4 (4) { 
    ["id"]=> 
    string(1) "1" 
    ["idMake"]=> 
    string(1) "1" 
    ["modelName"]=> 
    string(6) "Legend" 
    ["modelYear"]=> 
    string(4) "1986" 
    } 
    [1]=> 
    object(stdClass)#5 (4) { 
    ["id"]=> 
    string(1) "2" 
    ["idMake"]=> 
    string(1) "1" 
    ["modelName"]=> 
    string(3) "MDX" 
    ["modelYear"]=> 
    string(4) "2000" 
    } 
} 

我如何使用它的$.get()功能通過jQuery,纔能有這樣的事情:

id Model  Year 
    1 Legend  1986 
    2 MDX  2000 

我已經試過如下:

一個process.php文件:

<?php 
require 'DataLayer.class.php'; 
$dl = new DataLayer(); 

//get car make models 
$models = $dl->getCarModels($id); 
if(isset($models)){ 
    echo json_encode(json_encode($models)); 
} 
else{ 
    echo 'failed'; 
} 
?> 

的getCarModels功能:

public function getCarModels($id){ 
    $stmt = $this->pdo->prepare("SELECT * FROM model WHERE idMake=? ORDER BY modelName"); 
    $stmt->execute(array($id)); 
    return $stmt->fetchAll(PDO::FETCH_OBJ); 
} 

JavaScript函數呼籲點擊一些鏈接

function getCarModels(id, make){ 
    $.get(process.php, function(data){  
     var models = $.parseJSON(data); 
     for(var model in models.model.modelName){ // I got stuck here 

     } 
    }); 
} 

希望這是任何意義上的人。謝謝。

只需在此鏈接中找到一些類似問題:php multidimensional array into jQuery我正在嘗試。


就像我說從一開始,我的問題是非常相似的一個張貼在這個環節php multidimensional array into jQuery。我唯一的問題是,我真的不知道爲什麼他們使用json_encode()函數的原因是我刪除了json_encode()函數之一。

對於爲什麼我只使用jsan_encode()函數來獲得我想要的結果的原因,在大多數教程中已經兩次輸出數據之前,我會感激一些解釋。

再次感謝。

+1

它可能有助於使用螢火看到models'的'內容,以及來自服務器的GET響應的內容。 – 2012-03-16 15:51:48

+0

感謝您的建議:我有以下字符串:[{「id」:「1」,「idMake」:「1」,「modelName」:「Legend」,「modelYear」:「1986」},{「id」 :「2」,「idMake」:「1」,「modelName」:「MDX」,「modelYear」:「2000」}]不太確定如何處理這種類型的字符串而不是數組 – Lomse 2012-03-16 15:55:17

+0

oi,oi什麼是返回的是一個json數組,您可以使用Jquey $ .each方法來遍歷它。如果您不確定使用firebug調試模式來查看@justin – 2012-03-16 16:10:39

回答

0

你不需要在jQuery ajax中使用parseJSON,jQuery已經可以處理它了。你的數據是一個對象數組。這裏的例子遍歷它$.each

getCarModels()功能沒有被設置爲發送數據

function getCarModels(id, make){ 

    var dataToServer={ id: id, make: make};/* need to match these keys to $_GET keys in php*/ 
    $.get(process.php, dataToServer, function(data){  
     $.each(data, function(i, item){ 
      $('body').append('<p>'+item.modelName+'</p>'); 
     }) 
    }); 
} 

的PHP有問題也不會出現你是從阿賈克斯尋找$ _GET傳遞給你的查詢方法。我不承認你使用的PHP框架功能,但要通過ID以份重getCarModels你會需要這樣的東西:

$id=$_GET['id']; 
//get car make models 
$models = $dl->getCarModels($id); 
+1

without parseJSON,'alert(data)'give me''[{\「id \」:\「1 \」,\「idMake \」:\「1 \」,\「modelName \」:\「Legend \ 「\ 」modelYear \「:\ 」1986 \「},{\ 」ID \「:\ 」2 \「 \ 」idMake \「:\ 」1 \「 \ 」MODELNAME \「:\」 MDX \「,\」modelYear \「:\」2000 \「}]」'我想這是因爲我在process.php文件中使用了'json_encode(json_encode($ models))'。我在這個頁面發現了一個非常類似的問題:[Stack Overflow](http://stackoverflow.com/questions/7383919/php-multidimensional-array-into-jquery)。我一直有未定義的值,因爲我'$ .each(models,function(){ alert(models [0] ['modelName']); })' – Lomse 2012-03-16 17:17:15

+0

'使用'json'作爲ajax中的數據類型或使用$。 getJSON,如果問題在php中添加header application/json,並確保沒有其他東西被echo'd – charlietfl 2012-03-16 18:28:01

相關問題