我正在尝试通过 $http 执行 AngularJS 发布请求。我的代码如下所示:
$http({
url: "cgi-bin/post_event.pl",
method: "POST",
data : jsonToSend,
headers : {
'Content-Type' : "application/json",
}
}).success(function(data, status, headers, config) {
if (status === 200) {
console.log(data);
} else {
console.log(data);
}
}).error(function(data, status, headers, config) {
console.log(data);
});
通过 Firebug 查看时,我看到这部分代码被执行,但没有向服务器触发任何请求。
只有当我再次单击它时,请求才会命中服务器并调用成功方法。
有谁知道这是为什么?或者也许我在这里做错了什么......
这段带有 jQuery 的代码可以正常工作:
$.ajax({
url: "cgi-bin/post_event.pl",
type: "POST",
contentType : "application/json",
data : JSON.stringify(jsonToSend),
success : function (data) {
console.log(data);
CurrentEvent.eventname = "";
CurrentEvent.starttime = "";
CurrentEvent.eventLocation.longitude = "";
CurrentEvent.eventLocation.latitude = "";
$window.location.href = "#/host/my_events";
},
error : function (data) {
// add error to $rootScope.errors
}
});
编辑:啊,对不起,我应该更详细。这在成功的 ajax 请求后称为回调。此代码的其余部分只是构建 jsonToSend。
所以第一次调用这部分时,我可以在 firebug 中看到它构造了 $http 请求,但我看不到它在服务器上触发。
下次我单击一个按钮,该按钮第一次调用这个的 ajax 请求成功方法(但 id 不会通过来自 ajax 的回调调用它,而是直接进入成功方法)