javascript - jQuery ajax 适用于 Chrome,但不适用于 Firefox 或 Safari

标签 javascript jquery ajax firefox safari

我用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 中的请求显示为红色,并且没有发送任何数据。

enter image description here

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

enter image description here

我使用此代码将数据发送到我的服务器,然后将用户引导至 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

    });

最佳答案

很想发表评论,但尝试排除 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 中尝试)

我唯一能想到的是,您正在发布跨源...您是否发布到同一域?一定是网络错误/限制,因为您的代码有效

关于javascript - jQuery ajax 适用于 Chrome,但不适用于 Firefox 或 Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40545107/

相关文章:

javascript - 如何从 jQuery 插件 jqPuzzle 回调函数获取完成的拼图对象?

javascript - 制作正数或负数按钮

javascript - 当且仅当通过特定超链接访问页面时,如何在页面加载时执行 jQuery 函数?

javascript - 如何用另一个 javascript src 调用一个 javascript 外部 src?

javascript - 如何使用 javascript promises ES6 而不是 jQuery ajax 调用?

javascript - 当使用 ajax 调用渲染表单时,客户端验证在 Yii2 中不起作用

javascript - Chrome 打包应用程序无法打开同一窗口错误

Javascript 数组索引减一

javascript - 从 JavaScript 数组中删除负数

javascript - 根据 ajax 响应,在提交按钮单击时返回 true/false