无法在ajax成功中检测到mysql的json_encode结果

时间:2014-11-14 10:21:46

标签: javascript php jquery mysql ajax

我试图从MySql中成功获得JAX响应 这是我在我的控制台中遇到的错误 - > 未捕获的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)根本不起作用。

4 个答案:

答案 0 :(得分:2)

此行存在语法错误

data: { siteid : siteid }

在最后添加逗号

data: { siteid : siteid },
                         ^

答案 1 :(得分:1)

尝试类似这样的事情并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);
   }
});

答案 2 :(得分:0)

试试这个

$.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");
                }
            }); 
        })

答案 3 :(得分:0)

你没有其他阻止“if($ siteid!='')”的情况,所以你将从这个服务调用中获取空,而JSON在成功回调中无法解析。对于您的例外情况,如果条件“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");
    }
});

希望这能解决你的问题!