Jquery Ajax响应在Firefox上不起作用

时间:2016-01-07 16:22:44

标签: php jquery ajax google-chrome firefox

这是php的回复。我可以确认数据没问题。

 $ajax_response = array(
    'product_code' => $ajax_products,
    'filter' => $ajax_filter
);

echo json_encode($ajax_response);
exit();

以下是javascript中的代码:

$('#pr_category_filter').submit(function (event) {

    $.ajax({
        type: $(this).attr('method'),
        url: $(this).attr('action'),
        data: $(this).serialize(),
        dataType: 'json',
        cache: false,
        success: function (data) {

            if (data.product_code != null) {
                $('#pagination_contents').replaceWith(data.product_code);
            }

            if (data.filter != null) {
                $('#category_filter').replaceWith(data.filter);
            }
        },
        error: function (request, status, error) {
            return false;
        }
    });

    event.preventDefault(event);

});

此代码适用于Chrome和Opera。但是,此代码在Firefox上不起作用,因为php“echo”显示在Firefox而不是ajax响应上。我还尝试在javascript中放入console.debug('invoked')。与Chrome相反,Firefox中没有显示结果。你知道原因吗?

响应与浏览器工具开发相同。

由于

2 个答案:

答案 0 :(得分:1)

函数.preventDefault()不接受任何参数。

因此,Firefox可能不会接受这一点,只需提交表单即可。但Chrome并不真正关心并接受它。

所以改变

event.preventDefault(event);

event.preventDefault();

应该做的伎俩

答案 1 :(得分:0)

您需要使用PHP中的header()函数来指定您返回到AJAX调用的响应的内容类型。尝试以下操作(在回显响应之前放置它):

header('Content-Type', 'application/json');