Webkit和IE - AJAX形式提交到docs.google.com错误

时间:2014-11-22 09:51:53

标签: ajax internet-explorer webkit xmlhttprequest

尽管stackoverflow中存在许多与XMLHttpRequest和同源策略错误相关的问题,但我没有为我的问题找到解决方案。虽然The same origin policy wiki提供了相关主题的很好的参考,但我无法找到正确的方法。

问题在于,当我尝试将表单数据提交到Google表单时,基于WebKit的浏览器和IE提出了相同的问题。但是,上述浏览器成功提交了数据,我在电子表格中提供了数据。

XMLHttpRequest cannot load https://docs.google.com/a/<myDomain>/forms/d/<myFormKey>/formResponse. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://127.0.0.1:9000' is therefore not allowed access. 

另一方面,FireFox完成工作并返回状态代码:200 OK。问题是如何解决问题,基于WebKit的浏览器和IE显示状态代码0 OK200 OK

这是我正在使用的代码

HTML:

<form name="quickMessageForm" submit="postQuickMessageToGoogle()" >
  <input type="text" name="name" id="name"><br>
  <input type="email" name="email" id="email">
  <textarea name="content" id="content"></textarea>
  <button type="submit">Submit</button>
</form>

的JavaScript

$scope.postQuickMessageToGoogle = function() {
  $.ajax({
    url: 'https://docs.google.com/a/<myDomain>/forms/d/<myFormKey>/formResponse',
    data: {
      'entry.397424023'   : $scope.quickMessage.name,
      'entry.1127838473'  : $scope.quickMessage.email,
      'entry.1078099467'  : $scope.quickMessage.content
    },
    type: 'POST',
    dataType: 'xml',
    statusCode: {
      0: function (){
        successSubmit(
          $scope.quickMessage.name,
          $scope.quickMessage.email,
          $scope.quickMessage.content
        );
      },
      200: function (){
        successSubmit(
          $scope.quickMessage.name,
          $scope.quickMessage.email,
          $scope.quickMessage.content
        );
      }
    }
  });
}

1 个答案:

答案 0 :(得分:2)

我有同样的问题,我按照iShow对此post的评论解决了这个问题。 问题出现在dataType: 'xml'中。当我将其更改为dataType: 'jsonp'时,问题就解决了。