这是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中没有显示结果。你知道原因吗?
响应与浏览器工具开发相同。
由于
答案 0 :(得分:1)
函数.preventDefault()不接受任何参数。
因此,Firefox可能不会接受这一点,只需提交表单即可。但Chrome并不真正关心并接受它。
所以改变
event.preventDefault(event);
向
event.preventDefault();
应该做的伎俩
答案 1 :(得分:0)
您需要使用PHP中的header()
函数来指定您返回到AJAX调用的响应的内容类型。尝试以下操作(在回显响应之前放置它):
header('Content-Type', 'application/json');