PHP echo json_encode到jQuery无法正常工作?

时间:2011-08-07 00:13:37

标签: php jquery ajax

我正在我的计算机上开发一个站点,并且能够通过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();来修复此问题。

1 个答案:

答案 0 :(得分:1)

看起来您正在使用相对路径访问投票页面。您是否尝试过明确写入路径或提供正确的URL而不是../../../ list / vote?