2014-10-11 1 views
0

Я пытаюсь интегрировать angularjs с моим уже встроенным приложением в CakePHP. Когда я попытался получить запрос от CakePHP, используя AngularJS, я получаю ответ по ошибке. Хотя, если я удалю по одному и тому же URL-адресу, я получаю действительный json. Я также пытался использовать аддоны в хроме. Но AngularJS берет его с ошибкой.AngularJS получает ответ, но по ошибке с CakePHP

Мой контрольный код AngularJS.

var load = function() { 
    console.log('call load()...'); 
    console.log($rootScope.appUrl + '/songs.json'); 
    $http.get($rootScope.appUrl + '/songs.json') 
     .success(function (data, status, headers, config) { 
     $scope.posts = data; 
     alert("Here"); 
     alert(JSON.stringify($scope.posts)); 
     angular.copy($scope.posts, $scope.copy); 
     }) 
     .error(function (data, status, headers, config) { 

     alert("Error"); 
     console.log('DATA : ' + data); 
     console.log('Status : ' + status); 
     console.log('headers : ' + JSON.stringify(headers)); 
     console.log('config : ' + JSON.stringify(config)); 
     }); 
} 
load(); 
  1. Как я могу сделать обработку исключений, чтобы знать, какие ошибки?
  2. Как я могу проверить, нет ли ответа от сервера или сервера?
  3. 3.

Мой запрос заголовки ..

GET /demosite/songs.json HTTP/1.1 
Host: localhost 
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Cookie: toolbarDisplay=hide 
Connection: keep-alive 

заголовка ответа являются ...

HTTP/1.1 200 OK 
Date: Sat, 11 Oct 2014 03:48:34 GMT 
Server: Apache/2.4.7 (Ubuntu) 
X-Powered-By: PHP/5.5.9-1ubuntu4.4 
Set-Cookie: CAKEPHP=i07rme235ifh66gjq9htdutg21; expires=Sun, 12-Oct-2014 03:48:34 GMT; Max-Age=86400; path=/; HttpOnly 
Content-Length: 8717 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: application/json; charset=UTF-8 

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

Когда я проверяю свой запрос в XHR Console firebug, он показывает как OPTIONS вместо GET OR POST.

+0

, что у получить на консоли? –

+0

Предупреждение CORS - «Запрос на перекрестный запрос заблокирован: политика одного и того же происхождения запрещает чтение удаленного ресурса по адресу http: //localhost/demosite/songs.json. Это можно устранить, переместив ресурс в тот же домен или включив CORS. http: //localhost/demosite/songs.json Линия 0 '; Но я не думаю, что проблема связана с тем, что я использовал Angular используя CORS, но никаких изменений я не сделал. – Sankalp

+0

Запускаете ли это приложение локально, как файл HTML или используете localhost? –

ответ

1
var url = $rootScope.appUrl+"/songs.json"+"?callback=JSON_CALLBACK"; 
$http.jsonp(url) 
    .success(function(data){ 
     console.log("success"); 
    }) 
    .error(function(data){ 
     console.log("error"); 
    }); 

Если и нужно достигнуть домена КИО, пожалуйста, попробуйте это один :)

$http#jsonp

+0

Его просто помогают вытащить данные. не отправлять данные. – Sankalp

+0

Ур не отправляет данные –

+0

Но если я захочу в следующий раз, в будущем. JSONP не поможет мне в этом. – Sankalp

0

Более лучший способ выполнения ajax Calls - использовать Promise API в AngularJS.

Для примера. :

$scope.makeAjaxCall = function(url, data, successCallback) { 

     var promise = $http(request); 

     promise.success(function(data, status, header, config) { 
       successCallback(data); 
     }); 

     promise.error(function(data, status, header, config) { 
      if (status === 404) { 

      } else if (status === 406) { 

      } else if (status === 408) { 

      } else { 


      // you can check for other statuses such as 500 

      } 

     }); 
    }; 

Таким образом вы получите более подробную информацию о состоянии HTTP-вызова, а также об ошибке.

+0

Не могли бы вы объяснить немного больше? Я читал о обещаниях, но никогда не реализовывался. Я не нахожу много изменений в нашем коде. Вы назначили его, чтобы обещать переменную, делая то же самое, что я использую для успеха и обратного вызова. – Sankalp

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