我将尝试解析从数据库返回并编码为JSON对象的信息。
以下是检索信息的代码:
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;
}
这是我尝试解析信息的方法:
$.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'])
});
}
});
我已经尝试了多种方法来做到这一点,但我只会得到[object][object]作为响应。
这是响应内容: http://i.imgur.com/E5Hux.png
[object Object]
是对象的默认字符串表示形式,因此您的代码可能正常工作。如果您想检查变量,请使用console.log
而非alert
,因为alert
是一个非常糟糕的调试工具。另外,不要将对象与字符串连接! - Felix Klingconsole.log(this['code']); console.log(this['standard_one_id'])
。使用alert
和字符串拼接都会将对象转换为字符串,这是应该避免的。 - Felix Kling$.ajax
选项中添加dataType:'json'
,jQuery将自动管理JSON解析。response
将根据从服务器发送的内容而定,可能是数组或对象。不要使用async:false
。 - charlietflalert
不是调试/检查的正确工具,但你还是用它来截图了。请发布console.log(obj)
和console.log(response)
的输出结果。 - Felix Kling