我有一个jQuery函数,它将一个AJAX调用发送到PHP文件,以检查下拉菜单的选定值,并使用此值从数据库返回数据。
jQuery (document).ready(function() {
$("#country").change(function() {
country = $("#country").val();
$.ajax({
type: "POST",
url: "script.php",
dataType: "json",
data: $("#address").serialize(),
success: function(data) {
alert(data.code);
},
});
return false;
});
});
不使用:
alert(data[0].code)
PHP代码:
$country = $_POST["country"];
$stmt = $db -> prepare("SELECT * FROM country WHERE name = :country");
$stmt -> execute(array(":country" => $country));
$rows = $stmt -> fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row)
{
$code = $row["code"];
}
echo json_encode($code);
不使用:
echo json_encode(array(":code" => $code));
PHP脚本正常工作,因为它返回true值。此外,当我检查Mozilla控制台时,AJAX调用正确地将请求发送到PHP脚本,它也获得了返回值,但我仍然使用警报获得undefined
。
答案 0 :(得分:1)
更改此
foreach ($rows as $row)
{
$code = $row["code"];
}
要
$code = array();
foreach ($rows as $row)
{
$code[] = $row["code"];
}
echo json_encode($code);
答案 1 :(得分:0)
必须是这样的:
$country = $_POST["country"];
$stmt = $db -> prepare ("SELECT * FROM country WHERE name = :country");
$stmt -> execute (array (":country" => $country));
$rows = $stmt -> fetchAll (PDO::FETCH_ASSOC);
$code = array();
foreach ($rows as $row)
{
$code[] = $row["code"];
}
echo json_encode ($code);
使用PDO :: FETCH_ASSOC 时,只需或简单echo json_encode ($rows);
答案 2 :(得分:0)
OP解决方案。
问题解决了:
echo json_encode (array ("code" => $code));
我在使用"时遇到了错误:"之前"代码":
echo json_encode (array (":code" => $code));