我在我的电脑上开发了一个站点,并且能够用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表示数据为null。
我在服务器上本地使用MAMP (PHP/5.3.5)和PHP/5.3.2-1ubuntu4.9。它在本地工作,但在服务器上不起作用。有什么不对的?
编辑:更多信息。在生产服务器中,我的站点上的每个AJAX请求都会发生这种情况。请求实际上是通过的(投票、添加项目等等),只是jQuery没有被告知结果(这解释了为什么数据为null)。
更新: Scott找到了答案。在我回显json_encode之后,PHP继续尝试处理其余的代码。通过在每个exit();
之后添加echo json_encode();
来修正这个问题。
发布于 2011-08-06 16:16:36
看起来您正在使用相对路径访问投票页面。您是否尝试过显式地编写路径或给出正确的url而不是././../列表/投票?
https://stackoverflow.com/questions/6969855
复制