我正在我的计算机上开发一个站点,并且能够通过jQuery轻松地获得AJAX请求。但是,在生产服务器上,我遇到了问题。
这就是CodeIgniter控制器返回结果的方式:
# Return that everything worked.
$return = array('result' => 'success', 'data' => $item);
echo json_encode($return);
这是一些示例jQuery代码:
$.post("../../../list/vote/", { 'item_id' : item_id, 'value' : 0, 'action' : 'delete' },
function(data) {
if(data.result || !data.result) {
if(votes == null) votes = 0;
$(button).children('strong').text(--votes);
$(button).attr('name', '').removeClass('vote_cast');
$(button).parent('.meta').attr('name', '');
}
}, "json");
问题是PHP返回200 OK状态但Firebug中没有显示响应。由于没有返回任何内容,jQuery表示数据为空。
我在服务器上本地使用MAMP(PHP / 5.3.5)和PHP / 5.3.2-1ubuntu4.9。它在本地工作,但不在服务器上。可能有什么不对?
编辑:更多信息。对于生产服务器中我站点上的每个AJAX请求,都会发生这种情况。请求实际上经过(投票,添加项目等等),只是jQuery没有被告知结果(这解释了数据为空的原因)。
更新: Scott Harwell想通了。在我回应json_encode之后,PHP继续尝试处理剩下的代码。通过在每个exit();
之后添加echo json_encode();
来修复此问题。
答案 0 :(得分:1)
看起来您正在使用相对路径访问投票页面。您是否尝试过明确写入路径或提供正确的URL而不是../../../ list / vote?