使用JSON数据类型的AJAX调用返回undefined

时间:2016-05-03 10:39:09

标签: php jquery json ajax undefined

我有一个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

3 个答案:

答案 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));