ajax成功:函数(msg)未定义

时间:2016-09-16 07:46:39

标签: jquery json ajax html5

您好我有这个脚本返回msg undefined。在consol中它返回jsondata,但是当我发出警报或者我正在尝试验证它时,它不起作用。

$(function() {
    $(".aplica_bt").click(function(e) {
        e.preventDefault();
        var href = $(this).attr('href');

        $.ajax({
            url: href,

            datatype: "json",
            success: function(msg) {
                alert(msg.exista);
                if (msg.exista == "yes") {
                    alert('ai aplicat');
                }
                if (msg.aplicat == "yes") {
                    $('#modal_succes').modal('show');
                }
            },
        });
    });
});

enter image description here

这里也是返回json

的php代码
<?php

$id_c=$_GET['id_c'];
$id_j=$_GET['id_j'];

$stmt=$dbh->prepare("SELECT * FROM Aplicatii where id_c=:id_c and id_j=:id_j");
$stmt->bindParam(":id_c",$id_c);
$stmt->bindParam("id_j",$id_j);
$stmt->execute();
if($row=$stmt->fetch())
{
     $arr = array('exista'  => 'yes');
     echo json_encode($arr);
}
else
{
$stmt=$dbh->prepare("INSERT INTO Aplicatii (id_c,id_j) VALUES (:id_c,:id_j)");
$stmt->bindParam(":id_c",$id_c);
$stmt->bindParam("id_j",$id_j);
$stmt->execute();
 $arr = array('aplicat'  => 'yes');
     echo json_encode($arr);
}
?>

console.log的反应:

{"exista":"yes"}

2 个答案:

答案 0 :(得分:2)

console.log(msg)返回{"exista":"yes"}时,它不是object,而是string。因此,尝试访问属性(例如msg.exista)将返回undefined

当您在AJAX请求中设置错误的dataType时,可能会发生这种情况,在您的示例中正确设置为JSON

因此问题出在PHP方面,您需要在回复Content-Type中添加正确的headers

header("Content-Type: application/json");

答案 1 :(得分:0)

预留

header("Content-Type: application/json");

解决此错误的另一种方法是解析您的ajax响应

msg = JSON.parse(msg);