2012-12-26 25 views
4

我试图解析从数据库返回并编码成JSON对象的信息。解析通过Ajax传递的JSON对象

这是一个获取信息的代码:

$.ajax({ 
     type: "POST", 
     url: "lib/search/search.standards_one.php", 
     async: "false", 
     data: {subjects: subjects, grades: grades}, 
     success: function(response){ 
       $("#standards_results").html(""); 
       var obj = $.parseJSON(response); 
       $.each(obj, function(){ 
        alert(this['code'] + ", " + this['standard_one_id']) 
       }); 
      } 
     }); 

我已经尝试了许多不同的方式:

private function retrieve_standards_one(){ 
    $dbh = $this->connect(); 
    $stmt = $dbh->prepare("SELECT code, standard_one_id 
          FROM standard_one 
          WHERE grade_id = :grade_id 
          ORDER BY standard_one_id"); 
    $stnd = array(); 
    for($x = 0; $x < (count($this->grades)); $x++){      
    $stmt->bindParam(':grade_id', $this->grades[$x], PDO::PARAM_STR); 
    $stmt->execute(); 
    $stnd[] = $stmt->fetchAll(PDO::FETCH_ASSOC); 
    } 
    $json = json_encode($stnd); 
    return $json; 
} 

这个ID如何,我试图解析信息做到这一点,但我只得到[object] [object]作为回应。

这是响应:

http://i.imgur.com/E5Hux.png

+3

'[对象的对象]'是对象的默认字符串表示,所以你的代码可能工作正常。'alert'是**非常糟糕**调试工具,如果你想检查变量,请使用'console.log'而不要连接对象和字符串! –

+0

consol.log仍然只是返回[objects] s – Brendan

+0

你是否删除了字符串连接?这个['code']); console.log(this ['standard_one_id'])'。alert和string concatenation都会将对象转换为字符串,这就是你应该避免的。 –

回答

2

使用

console.log(this['code'] , this['standard_one_id']) 

而不是

alert(this['code'] + ", " + this['standard_one_id']) 
+0

它应该是'console.log(this ['code'],this ['standard_one_id'])'。如果你保留字符串连接,它不会有很大的区别。 –

+0

是的,它可以给出更好的输出 –

+0

CONSOL.log仍然只是返回[objects] s – Brendan

0

的dataType属性添加到您的AJAX调用。

$阿贾克斯({

type: "POST", 
    dataType: "JSON", 
    url: "lib/search/search.standards_one.php", 
    async: "false", 
    data: {subjects: subjects, grades: grades}, 
    success: function(response){ 
      $("#standards_results").html(""); 
      var obj = $.parseJSON(response); 
      $.each(obj, function(){ 
       alert(this['code'] + ", " + this['standard_one_id']) 
      }); 
     } 
    }); 
+0

如果你这样做,你必须删除'$ .parseJSON(response);'。除此之外,我认为这不会有什么区别。您只需更改解析响应的时刻即可。 –