jQuery Ajax 请求变成 AngularJS $http 请求
jQuery Ajax request turn into AngularJS $http request
我有这样的jQueryAjax请求。我需要把它变成一个 AngularJS $http 请求。我该怎么做?
$.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");
});
我的Angular实现
响应{"data":“”,"status":“200”,"config":....}数据为空
login : function (username, password) {
return $http({
method: 'POST',
url: someUrl,
data: {
user: username,
pass: password
},
headers: {
'Accept-Language': languageCode
}
})
}
我在下一个请求中成功获取了包裹在 JSON_CALLBACK 中的数据。但我不知道如何调用该回调。它不是自动完成的。响应看起来像 {data:"JSON_CALLBACK({mydata})"...}
login : function (username, password) {
var url = someUrl
+ '?callback=JSON_CALLBACK&user=' + username
+ '&pass=' + password;
return $http.post(url);
},
请参考$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
});
不存在 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);
})
可能与此有关??
你API在做什么工作?
我有这样的jQueryAjax请求。我需要把它变成一个 AngularJS $http 请求。我该怎么做?
$.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");
});
我的Angular实现
响应{"data":“”,"status":“200”,"config":....}数据为空
login : function (username, password) {
return $http({
method: 'POST',
url: someUrl,
data: {
user: username,
pass: password
},
headers: {
'Accept-Language': languageCode
}
})
}
我在下一个请求中成功获取了包裹在 JSON_CALLBACK 中的数据。但我不知道如何调用该回调。它不是自动完成的。响应看起来像 {data:"JSON_CALLBACK({mydata})"...}
login : function (username, password) {
var url = someUrl
+ '?callback=JSON_CALLBACK&user=' + username
+ '&pass=' + password;
return $http.post(url);
},
请参考$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
});
不存在 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);
})
可能与此有关??
你API在做什么工作?