尽管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 OK
或200 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
);
}
}
});
}
答案 0 :(得分:2)
我有同样的问题,我按照iShow对此post的评论解决了这个问题。
问题出现在dataType: 'xml'
中。当我将其更改为dataType: 'jsonp'
时,问题就解决了。