我刚刚为客户建立了一个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错误:”,errorThrown变量中没有实际的错误文本。
有没有人知道为什么这个代码可能会因我的客户端而失败,但似乎对其他人都可以正常工作。我很紧张,这是她的一些事情,但我不厌其烦地责备我的客户,然后尽我所能。
答案 0 :(得分:1)
假设:
url
参数errorThrown
参数为空白最可能的解释是,您的客户端正在访问与您自己的测试所使用的URI略有不同的URI(例如http://
而不是https://
)并且正在触发跨源请求您的服务器未授予使用CORS的权限。
您可以通过让客户在其浏览器中打开开发人员工具并查找有关Access-Control-Allow-Origin
的错误消息来确认这一点。
使用相对URI(或在服务器上设置CORS支持)可以缓解此问题。