我的ajax代码无效。它显示错误
XMLHttpRequest cannot load http://xxx.xxx.xxx No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. The response had HTTP status code 400.
如何解决问题。我尝试过不同的标题。但不发布数据。请解决我的问题。 我的代码是
$http({
method: "post",
dataType:'json',
url: res,
crossDomain : true,
data: {
'name': $scope.name,
'email': $scope.email,
'text area': $scope.query
},
headers: { 'Access-Control-Allow-Origin': '*' }
}).then(function success(data) {
alert("Message sent succesfully");
/*var success=data.data.issuccess;
if(success==true)
{
var name=data.data.username;
var userid=data.data.userid;
alert("Name= "+name+ "UserId="+userid);
}*/
});
答案 0 :(得分:1)
您必须在服务器上启用CORS。
请阅读:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
同时检查一下:
https://enable-cors.org/server.html
注意:我在阅读SLaks的评论后对此进行了更正。他是对的。
答案 1 :(得分:1)
问题是,http://xxx.xxx.xxx
在其响应中没有发送正确的标头,因此您无法访问它。有关流程示例,请参阅https://fetch.spec.whatwg.org/#cors-protocol-examples。
答案 2 :(得分:1)
我已经解决了这个问题。这是服务器端面临的问题。我改变代码是
$.ajax({
url: "http://xxx.xx.xx.xx/api/SendMail/SendEmail",
type: "POST",
async: false,
ContentType: "application/json; charset=utf-8",
data: {
'subject': "Contact us from SQU app",
'message': msgSQU
},
crossOrigin: true,
dataType: "json",
success: function (response) {
$resData = response;
//alert("Su");
showConfirm("Your Feedback succesfully send");
},
error: function (jqXHR, textStatus, errorThrown) {
alert('error');
//console.log(textStatus, errorThrown);
}
});
现在工作正常。