我有一个返回Jsonobject的web服务,我在这里使用Ajax在JS中调用它:
$scope.init = function () {
$.ajax({
type: 'GET',
timeout: 1000000000,
url: serverName.replace('services', 'servicesV2') + '/getTreasuryResults',
data: { data: 'None' }, // the data in form-encoded format, ie as it would appear on a querystring
dataType: "text", // the data type we want back, so text. The data will come wrapped in xml
success: function (data) {
var dataAngularTreasury = JSON.parse(data);
alert(dataAngularTreasury);
//FillDefaultTreasuryValues(data.split(";"));
CallTreasuryDetailValuesWS(934);
},
error: function (data) {
alert(errServiceCall); // show the string that was returned, this will be the data inside the xml wrapper
$('#loading').hide();
}
});
};
如果我在ng-click中调用init()函数,如
<button id="btnGetDefaultValues" type="button" class="button" ng-click="init()">Fill</button>
它运行没有问题。
但如果我在页面加载中调用此web服务,如
angular.module('termDeposite', []).controller('userCtrl', function ($scope) {
$scope.treasuryValues = [];
angular.element(document).ready(function () {
$.ajax({
type: 'GET',
timeout: 1000000000,
url: serverName.replace('services', 'servicesV2') + '/getTreasuryResults',
data: { data: 'None' }, // the data in form-encoded format, ie as it would appear on a querystring
dataType: "text", // the data type we want back, so text. The data will come wrapped in xml
success: function (data) {
var dataAngularTreasury = JSON.parse(data);
alert(dataAngularTreasury);
//FillDefaultTreasuryValues(data.split(";"));
CallTreasuryDetailValuesWS(934);
},
error: function (data) {
alert(errServiceCall); // show the string that was returned, this will be the data inside the xml wrapper
$('#loading').hide();
}
});
});
});
或
如果我在ng-init触发器中调用此web服务,如
<body id="body" ng-app="termDeposite" ng-controller="userCtrl" ng-init="init()" >
webservice进入错误步骤并抛出该错误:
&#34; \ n \ n \ n错误404 - 不是 找到\ n \ n \ n \ n \ n \ n
错误404 - 不是 发现
\ n \ n \ n来自RFC 2068 超文本传输协议 - HTTP / 1.1 :
\ n10.4.5 404 Not Found \ n服务器未找到任何匹配的内容 Request-URI中。没有说明条件是否是 暂时的或永久的。
如果服务器不希望这样做 客户可用信息,状态码403(禁止) 可以用来代替。如果是,应该使用410(Gone)状态代码 服务器通过一些内部可配置的机制知道一个 旧资源永久不可用且无转发 。地址
\ n \ n \ n \ n \ n \ n&#34;
最后,我可以使用ng-click调用web服务,但我无法使用ng-init或pageload调用相同的web服务。那么如何在页面框架范围内使用页面初始化中的ajax或页面加载来调用web服务?
答案 0 :(得分:2)
假设您将serverName作为全局并且它是可读的,那么ng-init版本或创建自定义指令并将代码粘贴在链接函数中应该有效。
检查Chrome开发工具(内置为chrome)中网络标签中实际调用的网址 - 在PC上的Mac f12上为cmd + alt + j。