在我的本地环境中,我的ajax响应是一个预期的json对象,它只包含我从sql数据库请求的对象及其值对,但一旦上传到hostgator,响应就会大得多,我的对象只能在响应对象的responseText值中找到。
responseText属性在我的本地环境中不存在,因此在我的实时环境中直接访问它会使我的本地代码和实时代码不同步,并且在进行更新时可能会导致问题。另外,responseText是一个包含//前面的我的对象的字符串,这使得在不进行解析和类型转换的情况下很难访问它。
我本来打算发布这些对象,但除非我重新创建它们,否则它们的格式不会很好,而且hostgator服务器的响应太大,无法重新创建。相反,以下是我的php脚本返回sql数据的方式。
$db = new PDO('mysql:host='.constant('DB_HOST').';dbname='.constant('DB_NAME').';charset=utf8', constant('DB_USER'), constant('DB_PW'));
$sth = $db->prepare('SELECT `index`, Todays_Date, First_Name, Middle_Name, Last_Name, Telephone, Position FROM application');
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
$row_count = count($result);
if($row_count > 0){
echo json_encode($result);
}else{
echo "No records found.";
}
// ajax call update
var listAjax = function() {
$.ajax({
url: "api/listAll.php",
dataType: "json",
type: "GET",
data: {},
}).done(function(data) {
buildList(data);
console.log(data);
}).fail(function(data) {
//console.log(data);
})
}
也许有更好的方法从php返回json对象?或者这可能是一个我从未遇到过的常见问题。如果需要从响应对象中查看其他内容,请告诉我。谢谢你的帮助。
更新:添加了ajax代码。确实看到来自服务器的带有响应文本的较长响应没有通过注释输出失败,但它的状态为200。试图发布它的图片,但堆栈溢出不允许我。下面是一个链接到响应输出的照片:http://i1378.photobucket.com/albums/ah114/Dakota_Hipp/IMG_1158_zps32xytuqx.png
每次讨论:
在所示的图像中,有一个//
被添加到您的回显数据的开头,这使您的JSON无效。您需要通过请求的URL:url: "api/listAll.php"
中包含的文件进行回溯,并删除//
以使JSON再次有效。