【问题标题】:jQuery ajax works in Chrome, but not in Firefox or SafarijQuery ajax 适用于 Chrome,但不适用于 Firefox 或 Safari
【发布时间】:2016-11-11 09:42:18
【问题描述】:

我用jQuery 实现了ajax 请求。这是代码:

//initialize value, nameValue, emailValue

$.ajax({
  url: "getPOST.php",
  type: 'POST',
  data: {
    'id': value,
    'name': nameValue,
    'email': emailValue
  },
  success: function(response) {
    console.log(response);
  }
});

该代码在 chrome 中运行良好,但在 Safari 和 Firefox 中失败。我已经看到了这个问题的一些答案,但他们已经 6 岁或以上。有什么办法可以解决这个问题?

编辑:失败是指在 php 方面,当在 Firefox 或 Safari 上运行时,没有任何内容存储在数据库中,但它在 Chrome 中按预期工作。控制台中没有错误消息。 Safari中的请求显示为红色,并没有发送任何数据。

我检查了 Firefox 中的帖子数据,它们应该是这样的。那里没有错误。尽管请求被涂成红色。这就是它的外观。 jQuery端出错?

在将用户引导至 PayPal 支付页面之前,我正在使用此代码将数据发送到我的服务器。

jQuery 代码。希望我没有删除很多大括号。

 // JavaScript Document
    jQuery(document).ready(function($){
      //you can now use $ as your jQuery object.



    //real stuff here
    $(".submit-link").click(function(e){
     var value=$.trim($(".url-submit").val());

     if(value.length>0){
     value = encodeURIComponent(value);
     var nameValue=$.trim($(".name-submit").val());
     var emailValue=$.trim($(".email-submit").val());

    if(nameValue.length>0){nameValue = encodeURIComponent(nameValue);}
    if(emailValue.length>0){emailValue = encodeURIComponent(emailValue);}


     $.ajax({
       url: "getPOST.php",
       type: 'POST',
        data: {"id":value,"name":nameValue, "email":emailValue},
       success: function(response) {
    console.log(response);
        }


    //go to link in href now
     });
        }else{
    var $urlSubmit = $('.url-submit');
      $urlSubmit.addClass('invalid');
      setTimeout(function(){
        $urlSubmit.removeClass('invalid');
      },500);

    e.preventDefault();
        }
    });


    //some other stuff

    });

【问题讨论】:

  • 当你说它失败时,会发生什么?您展示的 sn-p 没有任何问题会导致浏览器之间的不一致
  • 添加了一个编辑..
  • 在失败的浏览器中打开开发者工具,查看控制台是否有错误信息。如果您看到任何内容,请分享它们,因为它们将帮助诊断问题。编辑:刚刚看到你说它在 PHP 方面失败了。你能回显/注销帖子变量的样子吗?您还可以检查网络选项卡以查看发送到服务器的值。
  • @MadhuMagar 你应该为此投反对票,无,单,双 ['id'] ` 工作得很好
  • 首先设置您要发送的数据类型 application/json ,然后在发送之前对您的数据使用 JSON.stringify

标签: javascript jquery ajax firefox safari


【解决方案1】:

很想发表评论,但尝试排除 jquery 并尝试简单的 xhr/fetch 以查看它是否有效(如果您尝试 fetch,可能会遇到其他可以理解的错误)

fetch('getPOST.php', {
   method: 'POST',
   headers: {'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'}
   body: 'id=0&name=bob&email=bob%40localhost'
}).then(res => console.log(res))

(safari 没有 fetch,所以在 firefox 中试试)

我唯一能做的就是您发布跨域...您发布到同一个域吗?必须是网络错误/限制,因为您的代码有效

【讨论】:

  • 我使用的服务器还没有DNS连接,所以我输入IP地址。
  • 如果在同一个请求中完成,也许尽量不要将您的帖子重定向到贝宝
  • 这是奇怪行为的原因。谢谢老哥!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
相关资源
最近更新 更多