我刚刚为客户构建了一个 AJAX 联系表单,但客户提示它不起作用。每当我(或任何其他人,就此而言)测试它时,它都工作得很好。客户声称他们看到“Ajax Error”作为错误文本。这是我的代码:
$.ajax({
type: 'POST',
url: "http://example.domain.com/content/contact/php/verify.php",
dataType: 'html',
async: true,
data: {
captchaResponse: $("#g-recaptcha-response").val(),
contactType: $('#contactFormType').val(),
contactName: $('#contactFormName').val(),
contactEmail: $('#contactFormEmail').val(),
contactPhone: $('#contactFormPhone').val(),
contactMessage: $('#contactFormMessage').val()
},
success: function (data) {
// Success...
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
grecaptcha.reset();
/* This is the error the client is seeing, that no one else is */
$('#contactErrorField').html('AJAX Error: ' + errorThrown);
$('#contactErrorWrapper').show(0);
$('#contactBodyOverlay').hide(0);
}
客户端看到的只是“AJAX Error:”,errorThrown 变量中没有实际的错误文本。
有谁知道为什么这段代码对我的客户可能会失败,但对其他人来说似乎工作得很好。我很紧张这是她的事情,但我不愿意在尽我所能之前责怪我的客户。
最佳答案
给定:
url
参数中有绝对 URIerrorThrown
参数为空
最可能的解释是,您的客户端正在访问与您用于自己测试的 URI 略有不同的 URI(例如 http://
而不是 https://
) 并触发跨域请求,您的服务器未授予使用 CORS 的权限。
您可以通过让客户端在浏览器中打开开发人员工具并查找有关 Access-Control-Allow-Origin
的错误消息来确认这一点。
可以通过使用相对 URI(或通过在服务器上设置 CORS 支持)来缓解此问题。
关于javascript - Ajax 只适用于部分用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208444/