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

时间:2016-11-11 09:42:19

标签: 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

    });

1 个答案:

答案 0 :(得分:1)

需要很长时间的评论,但尝试排除jquery并尝试简单的xhr / 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中尝试)

我能做的唯一事情就是你发帖交叉起源......你是否发布到同一个域名?必须是网络错误/限制,因为您的代码有效