Angularjs 在没有请求数据的情况下触发请求
Angularjs firing request without request data
首先,如果问题重复出现,我深表歉意。
我正在使用 $q 服务发出 ajax 请求。
UtilityService.requestCall('/test/encrypt-data', {'json_string' : data_to_encrypt, 'encryption_key' : window.localStorage.getItem("Mi_Encryption_Key")})
.then(function(encrypt_response) {
var requestConoce = parseInt(window.localStorage.getItem("Mi_Cnonce")) + 1;
window.localStorage.setItem("Mi_Cnonce", requestConoce);
requestData['cnonce'] = requestConoce;
requestData['encrypted_data'] = encrypt_response.data;
return UtilityService.requestCall($scope.apiDetails.url, requestData, 'GET');
})
.then(function(api_response) {
var requestConoce = parseInt(window.localStorage.getItem("Mi_Cnonce")) + 1;
window.localStorage.setItem("Mi_Cnonce", requestConoce);
return UtilityService.requestCall('/test/decrypt-data', {'encrypted_string' : api_response.encrypted_data, 'encryption_key' : window.localStorage.getItem('Mi_Encryption_Key') });
})
.then(function(decrypt_response) {
$scope.serverResponse = JSON.stringify(decrypt_response);
return;
})
.catch(function(error) {
alert("Some Error");
})
MyApp.factory('UtilityService', ['$http', '$q', function($http, $q) {
return {
requestCall: function(requestUrl, requestData, methodType) {
var deferred = $q.defer();
var serverUrl = window.localStorage.getItem("Mi_Server_Url");
$http({
method: (methodType) ? methodType : "POST",
url: serverUrl + requestUrl,
data: requestData
})
.then(function(result) {
deferred.resolve(result.data);
},
function(error) {
deferred.reject(error);
});
return deferred.promise;
}
};}]);
我正在使用上面的代码发出请求。对于请求“/test/encrypt-data”
,它工作正常
但是 $scope.apiDetails.url
的请求不起作用。请求是在没有任何参数的情况下发出的但是,我在 requestData
中发送了所有必需的参数。
此代码适用于其他人(即使我正在发送数据)但不适用于此请求。
似乎angularjs 为同一个请求请求两次,一次没有数据,另一次有数据。
请帮忙解决这个奇怪的问题。请查看这些图片,它们显示了两个不同的请求,一次有数据,另一次没有数据。
首先,您收到两个请求,因为其中一个是 OPTIONS 调用,一个是实际的 POST 调用。这是正常现象,无需担心。
您发出的第二个请求是 GET 请求,不能包含任何 POST-Data。这只是 HTTP 不支持的。
因此,根据后端的期望,您可以将该请求转换为 POST 请求,也可以将数据添加为 GET 参数,如下所述:in the Angular docs
首先,如果问题重复出现,我深表歉意。
我正在使用 $q 服务发出 ajax 请求。
UtilityService.requestCall('/test/encrypt-data', {'json_string' : data_to_encrypt, 'encryption_key' : window.localStorage.getItem("Mi_Encryption_Key")})
.then(function(encrypt_response) {
var requestConoce = parseInt(window.localStorage.getItem("Mi_Cnonce")) + 1;
window.localStorage.setItem("Mi_Cnonce", requestConoce);
requestData['cnonce'] = requestConoce;
requestData['encrypted_data'] = encrypt_response.data;
return UtilityService.requestCall($scope.apiDetails.url, requestData, 'GET');
})
.then(function(api_response) {
var requestConoce = parseInt(window.localStorage.getItem("Mi_Cnonce")) + 1;
window.localStorage.setItem("Mi_Cnonce", requestConoce);
return UtilityService.requestCall('/test/decrypt-data', {'encrypted_string' : api_response.encrypted_data, 'encryption_key' : window.localStorage.getItem('Mi_Encryption_Key') });
})
.then(function(decrypt_response) {
$scope.serverResponse = JSON.stringify(decrypt_response);
return;
})
.catch(function(error) {
alert("Some Error");
})
MyApp.factory('UtilityService', ['$http', '$q', function($http, $q) {
return {
requestCall: function(requestUrl, requestData, methodType) {
var deferred = $q.defer();
var serverUrl = window.localStorage.getItem("Mi_Server_Url");
$http({
method: (methodType) ? methodType : "POST",
url: serverUrl + requestUrl,
data: requestData
})
.then(function(result) {
deferred.resolve(result.data);
},
function(error) {
deferred.reject(error);
});
return deferred.promise;
}
};}]);
我正在使用上面的代码发出请求。对于请求“/test/encrypt-data”
,它工作正常但是 $scope.apiDetails.url
的请求不起作用。请求是在没有任何参数的情况下发出的但是,我在 requestData
中发送了所有必需的参数。
此代码适用于其他人(即使我正在发送数据)但不适用于此请求。
似乎angularjs 为同一个请求请求两次,一次没有数据,另一次有数据。
请帮忙解决这个奇怪的问题。请查看这些图片,它们显示了两个不同的请求,一次有数据,另一次没有数据。
首先,您收到两个请求,因为其中一个是 OPTIONS 调用,一个是实际的 POST 调用。这是正常现象,无需担心。
您发出的第二个请求是 GET 请求,不能包含任何 POST-Data。这只是 HTTP 不支持的。 因此,根据后端的期望,您可以将该请求转换为 POST 请求,也可以将数据添加为 GET 参数,如下所述:in the Angular docs