Javascript 无请求数据的Angularjs触发请求

Javascript 无请求数据的Angularjs触发请求,javascript,angularjs,http,angular-promise,Javascript,Angularjs,Http,Angular Promise,首先,如果问题再次出现,我表示歉意 我使用$q服务发出ajax请求 UtilityService.requestCall('/test/encrypt-data', {'json_string' : data_to_encrypt, 'encryption_key' : window.localStorage.getItem("Mi_Encryption_Key")}) .then(function(encrypt_response) {

首先,如果问题再次出现,我表示歉意

我使用$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;
    }
};}]);
我使用上述代码发出请求。它对于请求“/测试/加密数据”工作正常

但是对
$scope.apiDetails.url的请求不起作用。请求没有任何参数,但我正在
requestData
中发送所有必需的参数

此代码适用于其他(即使我正在发送数据),但不适用于此请求

angularjs似乎对同一个请求请求了两次,一次没有数据,另一次有数据

请帮助解决这个奇怪的问题。请看这些图片,它们显示了两个不同的请求,一个有数据,另一个没有数据


首先,您会收到两个请求,因为其中一个是选项调用,另一个是实际的POST调用。这是正常的行为,没什么好担心的

您发出的第二个请求是GET请求,它不能包含任何POST数据。这是HTTP不支持的。
因此,根据后端的期望,您可以将该请求转换为POST请求,也可以将数据添加为GET参数,如下所述:

$scope.apitDetails.url中有什么内容以及
requestData
的确切定义位置?是的,responseData是define,我在requestCall()中得到它$scope.apiDetails.url是我的服务器的基本url。我已经尝试使用GET。但是,没有成功。服务器正在发送选项方法请求的响应,其中包含必填字段错误。如何处理这种情况这已通过GET请求的查询字符串解决,而不是在“数据”中传递requestData。