我有以下REST
服務,我必須對POST
方法訪問, 我可以通過jQuery
訪問,但我不知道如何與AngularJS
(v1)
<string xmlns = "http://schemas.microsoft.com/2003/10/Serialization/">
<script id = "tinyhippos-injected" />
{
"volumeResult": {
"gyydt": "9771241.17704773",
"gytotal": "29864436.1770477",
"gybudgeted": "29864436.1770477",
"lyydt": "10197350",
"lytotal": "27859381",
"lybudgeted": "10197350",
"cyytd": "6992208",
"lastUpdate": "March-2017"
},
"valueResult": {
"gyydt": "26862094",
"gytotal": "68217952",
"gybudgeted": "68232952",
"lyydt": "0",
"lytotal": "0",
"lybudgeted": "0",
"cyytd": "68217952",
"lastUpdate": "March-2017"
},
"trucksResult": {
"gyydt": "165951",
"gytotal": "497879",
"gybudgeted": "497879",
"lyydt": "168822",
"lytotal": "468814",
"lybudgeted": "168822",
"cyytd": "119442",
"lastUpdate": "March-2017"
}
}
</string>
這裏做到這一點是我controller.js:
angular.module('starter.controllers', [])
.controller('DashCtrl', ['$scope', '$http', function ($scope, $http) {
$http({
//headers: {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'},
headers: {'Content-Type' : 'application/json'},
url: 'https://myurl../api/getHPData',
method: 'POST',
// data: data,
params: {
"stationId": 263,
"crusherId": 27,
"monthYear": '2016-04'
}
})
.then(function (response) {
console.log(response);
})
// I don't have to use .success and .error function as they are [depricated][2]
//.success(function (data, status, headers, config) {
// $scope.greeting = data;
// var Result = JSON.stringify(data);
// var Result = JSON.parse(data);
//})
//.error(function (error, status, headers, config) {
// console.log("====================== Error Status is: " + error);
// console.log("====================== Status is: " + status);
// console.log("====================== Error occured");
//})
}]) // eof controller DashCtrl
.controller('MapsCtrl', function($scope) {})
.controller('AccountCtrl', function($scope) {
$scope.settings = {
enableFriends: true
};
});
什T I想是的值: 「volumeResult」> 「gytotal」
問題:
- 它總是返回:
Object {data: "{"result":"false"}", status: 200, config: Object, statusText: "OK", headers: function}
和
當我通過
monthYear
不帶引號它處理(算術)它作爲(2016-04 = 2012)
由於服務是
POST
但是當我分析它在Chrome Developers Tool
,所以我得到:(查詢字符串,這並不意味着是POST )
ionic.bundle.js:25005 XHR finished loading: POST " https://myurl../api/getHPData?crusherId=27&monthYear=2016-4&stationId=263 "
可能的解決方案: 要麼我使用錯誤的頭:
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Accept': 'application/json'
},
或標題可能是,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
或按我的朋友說:
When I change your code to use the code above, I get this error:
"{"Message":"The requested resource does not support http method 'OPTIONS'."}"
Which means that there is a CORS (Cross-origin Resource Sharing) issue. Chrome is trying to make a "preflight" request to allow CORS, but the server doesn't know what to do with it.
但我不認爲這是因爲這是我收到:
Object {data: "{"result":"false"}", status: 200, config: Object, statusText: "OK", headers: function}
來自服務器。注意到:{"result":"false"}
是服務器在未找到數據時顯示的消息或您通過錯誤參數。另外,下面的jQuery代碼證明我可以訪問服務器。:)
編輯
jQuery的片段:上面的腳本的
<script>
$(document).ready(function() {
get_homepage_data(263, 27, '2016-04');
function get_homepage_data(stationIds, crusherIds, date) {
var url = "https://myurl..";
var data_to_send = {
'stationId': stationIds,
'crusherId': crusherIds,
'monthYear': date
};
console.log("Value is: " + JSON.stringify(data_to_send));
//change sender name with account holder name
// console.log(data_to_send)
$.ajax({
url: url,
method: 'post',
dataType: 'json',
//contentType: 'application/json',
data: data_to_send,
processData: true,
// crossDomain: true,
beforeSend: function() {
}
, complete: function() {}
, success: function (result1) {
// I know I can do it in one line but lazy enough to edit it here :p
var Result = JSON.parse(result1);
var value_data = Result["valueResult"];
var foo = value_data["gyydt"];
console.log("Log of foo is: " + foo);
var foo2 = 0;
// 10 lac is one million.
foo2 = foo/1000000 + ' million';
console.log(JSON.stringify(value_data["gyydt"]) + " in million is: " + foo2);
}
, error: function (request, error) {
return false;
}
});
}
}); // eof Document. Ready
</script>
輸出爲腳本是:
Value is: {"stationId":263,"crusherId":27,"monthYear":"2016-04"} XHR finished loading: POST " https://myurl../api/getHPData ". Log of foo is: 26862094 "26862094" in million is: 26.862094 million Which is indeed perfect. :)
'當我通過monthYear不帶引號它處理它(2016-04 = 2012)',因爲它是一個基本的'math'操作。看着'它總是返回',似乎你的後端並沒有回報你所期待的。 –