我试图从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)
根本不起作用。
答案 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");
}
});
希望这能解决你的问题!