【问题标题】:Jquery Ajax response doesn't work on FirefoxJquery Ajax 响应在 Firefox 上不起作用
【发布时间】:2016-04-12 03:20:24
【问题描述】:

这是 php.ini 中的响应。我可以确认数据没问题。

 $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 中不显示任何结果。你知道原因吗?

浏览器工具开发的响应是一样的。

谢谢

【问题讨论】:

  • “php 'echo' 显示在 Firefox 上而不是 ajax 响应”是什么意思??
  • 在正常情况下,ajax 响应被替换为 id 为 pagination_contents 和 #category_filter 的标签。在 Firefox 上,ajax 响应像新的 http 请求/响应一样显示在屏幕上。换句话说,有一个带有 ajax 响应的新页面。
  • 我不知道,但我觉得你的 error: 函数返回一个值很奇怪。 error:success: 是回调函数。这个值会去哪里?
  • 你的 HTML 是什么样的?

标签: php jquery ajax google-chrome firefox


【解决方案1】:

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

因此,Firefox 可能不接受这一点,而只是提交表单。然而,Chrome 并不真正关心并接受它。

所以改变

event.preventDefault(event);

进入

event.preventDefault();

这应该可以解决问题

【讨论】:

  • 不,它不起作用。 event.preventDefault() 是我的第一个版本,但是在阅读了这个网站上的帖子后我改变了。
  • 这里是解释 event.preventDefault(event); 之间区别的链接。和 event.preventDefault(); :stackoverflow.com/questions/1367195/…
  • 根据 jQuery 文档,该函数不接受任何参数。 api.jquery.com/event.preventdefault
  • javascript 能运行吗?
  • 是的,确实如此。只有这个功能在 Firefox 上不起作用。
【解决方案2】:

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

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

【讨论】:

  • 不,它不起作用。您的代码与 javascript 中的 dataType: 'json' 相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多