Как отобразить данные с помощью функции $ .get, используя jQuery? - PullRequest
1 голос
/ 16 марта 2012

У меня возникла проблема, с которой я некоторое время боролся, и теперь мне нужна помощь: у меня есть следующий массив

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 в jQuery Я даю попытку.


Как я уже говорил с самого начала, моя проблема очень похожа на проблему, размещенную по этой ссылке php многомерного массива в jQuery .Мой единственный вопрос заключается в том, что я действительно не знаю причину, по которой они используют функцию json_encode () дважды, поскольку все, что я сделал, чтобы заставить ее работать должным образом, это удалил одну из функций json_encode ().

Буду признателен за некоторое объяснение причины, по которой я использовал только функцию jsan_encode (), чтобы получить желаемый результат, в то время как в большинстве уроков перед выводом данных прошло два раза.

1 Ответ

0 голосов
/ 16 марта 2012

Вам не нужно использовать parseJSON в jQuery ajax, 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 из ajax для передачи вашим запросам.Я не распознаю каркасные функции, используемые в вашем php, но для передачи идентификатора getCarModels в pphp вам понадобится что-то вроде:

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