在我的应用程序中,我们使用Restangular和$ http与服务器API进行通信。
第一个请求(图片上的一个/BasicInfo.json)使用Restangular来检索初始信息,比如用户名,还使用了指向部分应用程序的数字指针( appId )。 其他请求使用此数据进行进一步调用,只需使用常规$ http服务即可完成。
但是在IE9中具体(不是> = IE10,我也有html5shiv)我将解析后的响应作为一串字符获取,如下所示:
[123,23,45,98,143,...]
这就是为什么第一段数据没有得到正确处理而其他调用无法解决的原因 - 请参阅" undefined"在图片中的URL中。第二次和随后的呼叫使用以下格式来形成URL。
//baseURL and docId - are available, while appId is not
$http.get(baseURL + '/api/' + appId + '/Subjects/' + docId + '.json')
.success(function(data){ deferred.resolve(data);
..
这一行实际上是包含正确服务器响应的Chars列表,但是这种方式很奇怪。我已经找到了使用这样的函数转换它的方法:
//numbersLine is that actual line [123,23,45,98,143,...]
var str = '',
convertedArray = Array(numbersLine)[0];
for (var i = 0; i < convertedArray.length; i++) {
str = str + String.fromCharCode(convertedArray[i]);
}
return str;
但是我必须在我处理API数据的应用程序中到处进行此转换,因为这种IE9奇怪的行为。 关于我可以检查/改变的任何建议都将非常感激。
[UPD]
这是模块设置
define([
'angular',
'./modulename',
'app/base/base-module',
//module definition via RequireJS
angular.module('app.modulename').config(
['$stateProvider', '$BasicProvider',
function ($stateProvider, $BasicProvider) {
$stateProvider.state('***', {
url: '***',
views : {
///
},
resolve : {
//here should get POJO with appid
resolvedBasicInfo : ["$Basic", function($Basic){
return $Basic.getBasicInfo();
}],
//later goest two other calls that require this appid
基本模块本身有Restangular调用
define([
'angular',
'restangular',
//other configs
], function( angular, Restangular ) {
'use strict';
return angular.module('effactsApp.base').provider('$Basic', function(){
return {
$get : ['Restangular', 'baseApiService', //other configs
function (Restangular, baseApiService) {
//
if(!basicInfoRestCall){
basicInfoRestCall = Restangular.one('BasicInfo');
}
@dhavalcengg,希望它能给出这个想法
答案 0 :(得分:0)
您是否尝试将$ http标头中的响应标头设置为 内容类型:application / json;字符集= UTF-8?
答案 1 :(得分:0)
我偶尔会发现直接发生在我的案例中的问题:https://github.com/mozilla/pdf.js/issues/5429
这正是我的条件:
导致XHR请求以不正确的方式加载数据。