我有这样的jQuery Ajax请求。我需要把它变成一个AngularJS $ http请求。我怎么能这样做?
A.findAll({
include: [{ model: C, where: { z: "test" } }]
})
我的角色实施
回复{"数据" :"","状态" :" 200"," config" :....}数据为空
$.ajax({
type: "POST",
dataType: "jsonp",
crossDomain: false,
data:{
user: username,
pass: password
},
beforeSend: function (request){
request.setRequestHeader("Accept-Language", languageCode);
},
url: someUrl
})
.done(function (data, textStatus, jqXHR){
console.log(data);
})
.fail(function (jqXHR, textStatus){
console.log("failed");
});
我成功地使用下一个请求将数据包装在JSON_CALLBACK中。但我不知道怎么称呼这个回调。它不是自动完成的。响应看起来像{data:" JSON_CALLBACK({mydata})" ...}
login : function (username, password) {
return $http({
method: 'POST',
url: someUrl,
data: {
user: username,
pass: password
},
headers: {
'Accept-Language': languageCode
}
})
}
答案 0 :(得分:0)
请参阅$http文档。但这个jquery请求有点对应
$http({
method: 'POST',
url: '/someUrl',
data: {
user: username,
pass: password
},
headers: {
'Accept-Language':languageCode
}
}).then(function successCallback(response) {
//do something
}, function errorCallback(response) {
//do something
});
答案 1 :(得分:0)
没有JSONP POST请求。当jQuery看到dataType: jsonp
时,它会忽略method
属性并使用脚本GET请求。数据将作为URL的参数添加。
在AngularJS中,JSONP请求使用method: 'JSONP
指定。回调参数必须为JSON_CALLBACK
且必须大写。
login : function (username, password) {
return $http({
//method: 'POST',
method: 'JSONP',
url: someUrl,
//data: {
params: {
user: username,
pass: password,
callback: "JSON_CALLBACK"
},
headers: {
'Accept-Language': languageCode
}
})
}
请注意,由于数据是作为URL参数发送的,因此敏感信息(如密码)容易受到窥探攻击。
在JSFiddle上演示:
var url="//jsfiddle.net/echo/jsonp/";
var params = { user: "myUser",
pass: "123456",
callback: "JSON_CALLBACK"
};
$http.jsonp(url, { params: params} )
.then(function onSuccess(response) {
$scope.response = response;
console.log(response);
})
答案 2 :(得分:0)