2012-03-16 73 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

相关问题