【发布时间】:2015-06-24 14:25:01
【问题描述】:
在我的本地环境中,我的 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
【问题讨论】:
-
您是否检查以确保 AJAX 调用没有报告错误?当同样的事情发生在我身上时,我以前总是会出错。发布一些数据也可能会很好;不多,但足够了。
-
添加了响应的控制台输出和 ajax 调用的链接。奇怪的是它在我的电脑和 wamp 上运行良好,但在托管服务器上却不行。
-
好吧,我们需要确保托管服务器没有问题,因此请继续从该位置进行测试。我想让你试试这个,然后取笑我。在您的 AJAX 对象中,在 data: {} 下方,我希望您添加两个属性。
success: function(data) { alert("I have data"); },和error: function(obj) { alert("Error"+obj); }。这应该允许您调试并确定错误来自何处。您是否尝试过查看输出(通过 URL)并查看是否显示任何错误? (应该比使用 AJAX 对象来查找错误更容易) -
将 ajax 数据类型更改为文本,并收到 // + 有效 json 的响应。看起来响应已 // 添加到它,使其无效 json 导致 ajax 调用在 ajax 数据类型为 json 时失败,即使状态为 200。无法找出原因 // 会被添加。
-
//不会从encode_json()添加。检查您从url: "api/listAll.php",请求数据的页面,并检查是否有任何//正在显示。这是我唯一能想到的。//只是在某个地方不合适。
标签: php mysql ajax json responsetext