2015-08-24 5 views
1

Я очень новичок в Angular JS и Ionic приложении. Я попытался получить данные json от url. Но, к сожалению, я не мог получить никакого ответа. Вместо этого я получаю сообщение об ошибке, как показано на экране нижеУгловой JS - HTTP GET запрос вызывает ошибку

Я попытался двумя способами,

Попробуйте 1:

function(){ 
      return $http.get("url?subjStudyId=441",{'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}).then(function(response){ 

       chats = response.data; 
       alert(JSON.stringify(chats)); 
       return chats; 

      },function(err) { 
      alert(JSON.stringify(err)); 
    }) 
     } 

Попробуйте 2:

function($http) { 
var chats = []; 
    return { 
     all: function(){ 
      return $http.get("url?subjStudyId=441").then(function(response){ 

       chats = response.data; 
       alert(JSON.stringify(chats)); 
       return chats; 

      },function(err) { 
      alert(JSON.stringify(err)); 
    }) 
     } 
    } 

Пожалуйста, помогите мне найти решение.

+0

Какой язык вы используете для внутреннего интерфейса, Java? – Dayan

+0

Да.вы правы –

ответ

1

Ваша проблема может быть CORS, которая стоит за Cross-Origin Resource Sharing взглянуть на эту статью here в глубины CORS.

Включите CORS на свой сервер и попробуйте выполнить запрос еще раз. Вы можете также использовать JSONP, позволяя, что на внутреннем интерфейсе, то делать

$http.jsonp('url?callback=JSON_CALLBACK&param=value);

JSONP означает «JSON с Padding» (и JSON означает JavaScript Object Notation), это способ получить данных из другого домена, что обходит правила CORS (перекрестный источник ресурсов). CORS - это набор правил « » о передаче данных между сайтами, у которых с клиентом имеется другое доменное имя .

Я закодирован два примера, один с помощью $http.get и другого $http.jsonp, ни работу, которая говорит мне, что вы не имеете Access-Control-Allow-Origin "*" в вашем сервере и вы не имеете JSONP настройки поддержки. Перейдите к enable-cors.org, у них появились хорошие статьи, которые помогут вам настроить CORS на вашем сервере.

Технически вы должны придерживаться CORS, так как JSONP - это больше security concern. Поэтому, если ничто не останавливает вас от включения только CORS, тогда придерживайтесь этого.

Пример выполнения стандартных $http.get и $http.jsonp запросов с использованием обещаний.

var app = angular.module("MyApp", []); 
 

 
app.controller("MyCtrl", function($scope, $http){ 
 

 
    $scope.data = ""; 
 

 
    $scope.normalCall = function(){ 
 

 
    var results = $http.get('http://202.133.56.91:8081/SD_BIO/app/retrievenotifications.action?subjStudyId=441') 
 
    .then(function(response){ 
 
     $scope.data = response; 
 
    }, function(error){ 
 
     $scope.data = error; 
 
    }); 
 
    
 
    return results; 
 
    }; 
 
    
 

 
$scope.jsonPCall = function(){ 
 
     
 
var results =$http.jsonp("http://202.133.56.91:8081/SD_BIO/app/retrievenotifications.action?callback=JSON_CALLBACK") 
 
    
 
    .then(function(response){ 
 
     $scope.data = response; 
 
    }, function(error){ 
 
     $scope.data = error; 
 
    }); 
 
    
 
    return results; 
 
    }; 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="MyApp"> 
 
    <div ng-controller="MyCtrl"> 
 
    <button ng-click="normalCall()">Original Call</button> | 
 
     <button ng-click="jsonPCall()">JSONP Call</button> 
 
    <br><br> 
 
    <div ng-model="data">{{data}}</div> 
 
    </div> 
 
</div>

+0

В настоящее время другая команда разработчиков заботится о бэкэнд. Я предложил им включить CORS. Тем временем я пробовал $ http.jsonp ("url? Callback = json_callback & subjStudyId = 441"). Но, к сожалению, я все еще сталкиваюсь с одной и той же проблемой. Помогите мне в этом Dayan –

+0

Существует не так много, что вы можете сделать, кроме того, чтобы поговорить с командой, обрабатывающей серверную часть, и объяснить им, что CORS необходимо включить, чтобы ваша JS успешно обменивалась данными , jsonp не работает, потому что не настроен на сервере. – Dayan

+0

Ок Даян. Я поговорю с ними ... –

-1

Вы должны указать URL вы собираетесь сделать GET

url?subjStudyId=441 

не URL, это должно быть что-то вроде -> someurl.com/?subjStudyId=441 где -> ? это начало запроса и -> = это значение вы

+0

Я только что заменил «http: // ......? subjStudyId = 441» с url в моем сообщении. –

+0

url - это глобальный var, который содержит полный URL-адрес. Вы можете сказать, потому что запрос был сделан и возникла ошибка с полным URL-адресом ... – Dayan

Смежные вопросы