出于某种原因:
return jquery.ajax('my url', {
crossDomain : true
, data : JSON.stringify({"brand": self.current})
, type : 'POST'
}).success(function(data){
scope.results = data;
});
和/或这个:
curl -X POST -H "Content-Type: application/json" -d '{"brand":"target"}' myUrl
工作正常,但这:
var req = {
method: "POST"
, url : "my url"
, data : JSON.stringify({"brand": self.current})
};
return $http(req).
success(function(data){
scope.results = data;
});
惨败
“选项我的网址(匿名函数)@angular.js:9866sendReq @angular.js:9667$get.serverRequest @angular.js:9383processQueue @angular.js:13248(匿名函数)@angular.js:13264$get.Scope .$eval @ angular.js:14466$get.Scope.$digest @ angular.js:14282$get.Scope.$apply @ angular.js:14571(匿名函数) @ angular.js:21571jQuery.event.dispatch @ jquery.js:4430jQuery.event.add.elemData.handle@jquery.js:4116
(索引):1 XMLHttpRequest 无法加载我的网址。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 源“ http://localhost:5000 ”。响应的 HTTP 状态代码为 404。”
它们是相同的网址。重量级 我偷偷怀疑 jquery 中的“crossDomain:true”选项是 jquery 工作的原因,但如果是这样的话,那么问题是:
我如何用角度做到这一点?
-- 使用 jquery 的默认 ajax 方法时,范围不会随结果更新,但我知道正在分配数据,因为我正在将其注销,如果我再次提交请求,范围会随着第二个更新价值。
第二个问题-为什么我的视图没有随结果更新?
更新:
失败的原因与我从服务器返回的响应无关,问题是 Angular 正在将此 POST 请求转换为 OPTIONS 请求:(取自 google chromes 的 xhr 工具:)
Remote Address: the remote address
Request URL:the request endpoint
Request Method:OPTIONS <-------------
Status Code:404 Not Found
进一步检查显示:
OPTIONS /my url HTTP/1.1 <--------------
Host: my urls host
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: POST
Origin: http://localhost:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
Access-Control-Request-Headers: accept, charset, content-type
Accept: */*
Referer: http://localhost:5000/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
这不是它应该做的,因为我在我传递给 $http 的 req 对象中特别说这是一个 POST 请求。
...
那么我如何制作有角度的......不要那样做?
还有——为什么要这么做?