簡體   English   中英

無法在Ajax成功中檢測到來自mysql的json_encode結果

[英]Cannot detect json_encode result from mysql in ajax success

我正在嘗試從MySql成功獲得AJAX的JSON響應。
這是我在控制台中遇到的錯誤-> Uncaught SyntaxError:意外令牌<

我的AJAX代碼。

    function getMessage(siteid)
    {   
    document.getElementById("add").disabled = true;
    $.ajax({
        type: "POST",               
        url: "checkSite.php",   
        data: { siteid : siteid }, //6 digit number
        success: function(data) {
            alert(data);
            var obj = jQuery.parseJSON(data);
            if(objData.status == "not available"){
                alert("Not Available");
                document.getElementById("add").disabled = false;
            }
            if(objData.status == "available"){
                alert("Available");
                document.getElementById("add").disabled = false;
            }
        },
        error: function(result){
            alert("error");
        }
    }); 
}

我的checkSite.php

$siteid = $_POST['siteid']; 
if($siteid !=''){
   $sql = "SELECT * FROM  tablename WHERE siteid='$siteid'";
   $result2 = mysql_query($sql);
   if(mysql_num_rows($result2) > 0){        
       echo json_encode(array('status' => 'not available'));
   }
   else{            
    echo json_encode(array('status' => 'available'));
   }        

}

它向我顯示了parse Error. jQuery.parseJSON(data) parse Error. jQuery.parseJSON(data)根本不起作用。

這行有語法錯誤

data: { siteid : siteid }

在末尾添加逗號

data: { siteid : siteid },
                         ^

試試這樣的東西和console.log並檢查結果

$.ajax({            

    url         :   'checkSite.php',
    dataType    :   'json',
    cache       :   false,
    contentType :   false,
    processData :   false,
    data        :   { siteid : siteid },                           
    type        :   'post',
    success     :   function(data){ 
                    console.log (data);
   }
});

嘗試這個

$.ajax({
                type: "POST",               
                url: "checkSite.php",   
                data: { siteid : siteid }, //6 digit number
                dataType : 'json'
                success: function(data) {
                    if(data.status == "not available"){
                        alert("Not Available");
                        document.getElementById("add").disabled = false;
                    }
                    if(data.status == "available"){
                        alert("Available");
                        document.getElementById("add").disabled = false;
                    }
                },
                error: function(result){
                    alert("error");
                }
            }); 
        })

對於“ if($ siteid!='')”情況,您沒有else塊,因此您將從此服務調用中獲取空內容,而該服務調用無法通過JSON在成功回調中進行解析。 對於您的例外情況,此if條件“ if($ siteid!='')”似乎失敗。

因此,您的checksite.php應該如下所示。

$siteid = $_POST['siteid']; 
if($siteid !=''){
  if(siteid =='1'){        
       echo json_encode(array('status' => 'not available'));
   }
   else{            
    echo json_encode(array('status' => 'available'));
   }        

}
else
{
     echo json_encode(array('status' => 'not a valid site id'));
}

編輯:

這也可能是一個內容類型問題,使用dataType作為json,並且您不需要顯式解析json,則可以跳過“ jQuery.parseJSON(data);”行。

對於您的情況,我相信它采用html,它可能會添加html / header標簽,因此無法解析JSON.parse。 參見下文,您修改后的代碼。

$.ajax({
    type: "POST",               
    url: "checkSite.php",   
    data: { siteid : siteid }, //6 digit number
   dataType : 'json',
   accepts: "application/json; charset=utf-8",
   success: function(data) {
        console.log(data);
        var objData= data;
        if(objData.status == "not available"){
            alert("Not Available");
            document.getElementById("add").disabled = false;
        }
        if(objData.status == "available"){
            alert("Available");
            document.getElementById("add").disabled = false;
        }
    },
    error: function(result){
        alert("error");
    }
});

希望這能解決您的問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM