jQuery ajax适用于Chrome,但不适用于Firefox或Safari
问题描述:
我使用jQuery
实现了ajax请求。这是代码:jQuery ajax适用于Chrome,但不适用于Firefox或Safari
//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方面的错误?
我使用此代码将数据发送到我的服务器,指导用户对支付宝付款页面之前。
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('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浏览器没有获取所以尝试在Firefox中)
我唯一能做的就是,你张贴交叉起源...你是发布到同一个域名?必须是网络错误/限制因为你的代码有效
当你说失败时会发生什么?您所显示的代码片段没有任何问题会导致浏览器之间的不一致 –
已添加编辑.. – sanjihan
在浏览器中打开它失败的开发人员工具,并查看控制台中是否有任何错误消息。如果您看到任何内容,请分享它们,因为它们可以帮助诊断问题。编辑:只是看到你说它在PHP方面失败。你可以回应/注销后变量的样子。您还可以检查网络选项卡以查看发送到服务器的值。 – Dymos