Ajax只适用于某些用户?

时间:2015-08-25 15:46:47

标签: javascript jquery ajax

我刚刚为客户建立了一个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变量中没有实际的错误文本。

有没有人知道为什么这个代码可能会因我的客户端而失败,但似乎对其他人都可以正常工作。我很紧张,这是她的一些事情,但我不厌其烦地责备我的客户,然后尽我所能。

1 个答案:

答案 0 :(得分:1)

假设:

  • url参数
  • 中有绝对URI
  • errorThrown参数为空白

最可能的解释是,您的客户端正在访问与您自己的测试所使用的URI略有不同的URI(例如http://而不是https://)并且正在触发跨源请求您的服务器未授予使用CORS的权限。

您可以通过让客户在其浏览器中打开开发人员工具并查找有关Access-Control-Allow-Origin的错误消息来确认这一点。

使用相对URI(或在服务器上设置CORS支持)可以缓解此问题。