在链接上执行ajax点击Firefox和Safari

问题描述:

下面的代码在单击链接时执行ajax请求。它首先执行请求,然后遵循href中指定的链接。这在Chrome中运行良好,但在Firefox或Safari中,此类代码无法以我未知的原因成功发布数据。这两种浏览器的解决方法是什么?在链接上执行ajax点击Firefox和Safari

$(".submit-link").click(function(e){ 



var value=$.trim($(".url-submit").val()); 
if(value.length>0){ 
    //initialize name and email 


$.ajax({ 
    url: "getPOST.php", 
    type: 'POST', 
    data: {"id":value,"name":nameValue, "email":emailValue}, 
    success: function(response) { 
console.log(response); //nothing gets printed in console when using Firefox or Safari, but in Chrome it works as expected 
    } 


//go to link in href now 
}); 
    }else{ 
//do something else 
e.preventDefault(); 
    } 
}); 
+0

没有if语句,但有一个else语句。你能编辑你的脚本吗? – Qsprec

+0

感谢您通知我。 – sanjihan

只是让代码更简单;

$(".submit-link").click(function (e) { 
     e.preventDefault(); 
     var value = $.trim($(".url-submit").val()); 
     if (value.length > 0) { 
      //initialize name and email 
      $.ajax({ 
       url: "getPOST.php", 
       type: 'POST', 
       data: { "id": value, "name": nameValue, "email": emailValue }, 
       success: function (response) { 
        console.log(response); 
        window.location = $('.submit-link').attr('href'); //Assumed your element that has submit-link class also contains the href attribute 
       } 
      }); 
     } 
    }); 

当你完成你的ajax请求后,现在你可以去链接了。

我在函数的开始处添加了e.preventDefault();。如果值长度大于“0”,则会发出ajax请求,并在ajax请求完成后将用户重定向到链接。

另请检查您的value以确保其长度大于“0”。