javascript - 无法处理场景 : No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' 因此不允许访问

标签 javascript jquery ajax cors google-forms

我的网页上有一个表单,我用它来捕获数据并将其发布到 Google 表单。我使用的代码是我在 this answer 上看到的。现在,正如预期的那样,我收到如下错误:

XMLHttpRequest cannot load https://docs.google.com/forms/d/.../formResponse. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

我发出请求的脚本如下:

function postToGoogle() {
    $.ajax({
    url: "https://docs.google.com/forms/d/.../formResponse",
    data: {"entry.1691469052": "test message"},
    type: "POST",
    dataType: "xml",
    success: function() {
        alert("Success");
    },
    error: function() {
        alert("Error");
    }
});
}

$(document).ready(function(){
    $('#form').submit(function() {
        postToGoogle();
        return false;
    });
});

现在,即使我收到错误,我的数据仍然保留为我想要的结果的形式。

我面临的问题是,如果数据被传递,我想向用户显示一条消息,说明数据已收到。我想做的是:

  1. 通过使用 CORS 或类似方法修复错误(我不熟悉并且无法找到答案)
  2. 以某种方式在我的“错误”函数中检查唯一的问题是No 'Access-Control-Allow-Origin'问题,然后在该场景中生成一条“成功”消息。如果存在其他问题,我只会向用户返回“错误”消息

到目前为止,我还没有找到有效的东西。有什么想法吗?

最佳答案

请参阅 $.ajax 文档:

error

Type: Function( jqXHR jqXHR, String textStatus, String errorThrown )

A function to be called if the request fails. The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error."

所以你可以这样写:

error: function( jqXHR, textStatus, errorThrown ) {
  if( errorThrown.indexOf("Access-Control-Allow-Origin") > 0 ) { 
   // success...
  }

错误文本也可以位于jqXHR.responseText内。

关于javascript - 无法处理场景 : No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' 因此不允许访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342901/

相关文章:

javascript - 如何自动保存自动完成值?

javascript - AngularJS 中使用 ajax 获取数据的最佳方式是什么

javascript - 缩放 HTML5 Canvas 图像

javascript - 在新选项卡 'about:blank' 上打印并像数据表库一样打印后关闭

javascript - javascript中的合并排序返回重复的元素

javascript - jQuery Accordion 悬停而不是单击

javascript - 在最后一个 div 之后追加项目

ajax - 使用 MVC3 @Url.Action 的 JQuery Load 无法正确传递参数

javascript - js for 循环排序数字

javascript - 缩小的 AngularJS 给了我不可读的错误