在我的网络托管服务上进行AJAX调用时出现以下错误:
Status: parsererror: Error: SyntaxError: Unexpected end of JSON input
此脚本使用XAMPP可以进行良好的本地测试,返回的数据没有问题。用户可以按几个按钮,这将在某个时间点进行AJAX呼叫。这些功能在我们的网络托管服务提供商上运行后,某些功能可以正常运行,而其他功能似乎不返回任何内容。
这是AJAX调用之一的示例:
function vesselajax(){
$.ajax({
url: 'vesselajax.php',
method: 'GET',
data: {},
dataType:'json',
success: function(data){
document.getElementById("vesseltable").innerHTML = '<tr><th>FCM</th><th>Hull ID</th><th>Manu ID</th><th>Name</th><th>Manufacturer</th><th>Length</th><th>Year</th><th>Value</th><th>Owner</th><th>Loss Payee</th><th>Base</th></tr>' + data;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
});
}
这是来自vesselajax.php的一些代码
<?php
require 'login.php';
$connection = new mysqli($host, $user, $pword, $database, 3306);
if ($connection ->connect_error) die($connection ->connect_error);
$query = "select v.vessel_table_id, v.vessel_fcm, v.vessel_hull_id, v.vessel_name, v.vessel_length, v.vessel_manufacturer, v.vessel_manufacturer_id, v.vessel_year, v.vessel_value, o.owner_name, l.loss_payee_name, b.base_name
from vessel v
join owner o
on o.owner_id = v.owner_id
join loss_payee l
on l.loss_payee_id = v.loss_payee_id
join base b
on b.base_id = v.base_id";
$result = $connection->query($query);
if ($result->num_rows > 0) {
$counter = 1;
$data = "";
while($row = $result->fetch_assoc()) {
$_SESSION['vti'] = $row['vessel_table_id'];
$data .= "<tr><td>". $row["vessel_fcm"]. "</td><td>". $row["vessel_hull_id"]. "</td><td>". $row["vessel_manufacturer_id"]. "</td><td>". $row["vessel_name"]. "</td><td>". $row["vessel_manufacturer"]. "</td><td>". $row["vessel_length"]. "</td><td>". $row["vessel_year"]. "</td><td>". $row["vessel_value"]. "</td><td>". $row["owner_name"]. "</td><td>". $row["loss_payee_name"]. "</td><td>". $row["base_name"]. "</td><td>"."<a href='removevessel.php?vti=".$_SESSION['vti']."'><button type='button' rel='tooltip' title='Remove' class='btn btn-danger btn-simple btn-xs'><i class='fa fa-times'></i></button></a><button name='".$_SESSION['vti']."' id='".$counter."' onclick='editvesselnow(this.name,this.id);' type='button' rel='tooltip' title='Edit' class='btn btn-warning btn-simple btn-xs'><i class='fa fa-edit'></i></button>"."</td></tr>";
$counter++;
}
echo json_encode($data);
} else {
echo "<div class='header'>0 results</div>";
}
$connection->close();
?>
在您提到有关准备好的语句之前,我现在只是在测试:)
这些脚本在本地运行良好,可以提取所有关联的数据,但是当加载到Web环境中时,仅对其中一些AJAX调用抛出上述错误。其中大多数与我在下面显示的内容非常相似。
有什么建议吗?
答案 0 :(得分:0)
当查询返回0行时,您将返回HTML而不是JSON。更改
} else {
echo "<div class='header'>0 results</div>";
}
收件人:
} else {
echo json_encode("<div class='header'>0 results</div>");
}
虽然不清楚为什么要返回JSON。通常用于返回数组和对象,而不是文本或HTML。
答案 1 :(得分:0)
从我的php文件中删除:echo echo__json($ data)并将其切换为仅echo($ data)。
此外,在ajax调用中,请确保将dataType从json更改为“ html”