2016-09-16 60 views
2

你好,我有這個腳本,返回msg undefined。在CONSOL中它返回jsondata,但是當我做出警報或當我試圖驗證它時,它不起作用。ajax成功:函數(味精)undefined

$(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

也在這裏是PHP代碼,返回JSON

<?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"} 
+0

是什麼'的console.log(味精);'返回? – eisbehr

+0

'{「exista」:「yes」}' – chris227

+0

所以它返回一個'string'而不是'object'?然後'msg.exista'必須是'undefined'。 – eisbehr

回答

2

console.log(msg)回報{"exista":"yes"}它不是一個object ,它是一個string。所以試圖訪問一個屬性,如​​,將返回undefined

當您在您的AJAX請求中設置了錯誤的dataType時,可能會發生這種情況,在您的示例中正確設置爲JSON

所以問題在於PHP方面,您需要將正確的Content-Type添加到響應headers

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

感謝您添加答案 – shivgre

0

一邊

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

另一種方式來解決這個錯誤是解析你的Ajax響應

msg = JSON.parse(msg);