JavaScript не получает JSON с другого хоста

Я новичок в концепции RESTful, сейчас изучаю Backbone и у меня возникли некоторые проблемы.

Сейчас я запускаю одностраничное приложение на HTTP: // локальный используя backbone.js и API находится на Http: // phalconapi (еще один vhost).

В Http: // phalconapi У меня есть этот скрипт jsontest.php, возвращающий JSON:

<?php
header("HTTP/1.1 200 OK");
echo json_encode( ['test'=>1] );

В HTTP: // локальный, это мой app.js, поддерживающий магистраль.

var FlightsList = Backbone.Model.extend({
//urlRoot: '/jsontest.php'
urlRoot: 'http://phalconapi/jsontest.php'
});

var DashboardController = BackboneMVC.Controller.extend({
name: 'dashboard',

home: function() {
var flights = new FlightsList();

flights.fetch({
success: function(flights) {
alert(flights.toJSON());
console.log(flights.toJSON());
},
error: function(model, xhr, options) {
console.log('Fetch error');
}
});
}
});

var router = new BackboneMVC.Router();

Backbone.history.start({pushState: true});

Так что проблема в том, что всякий раз, когда я устанавливаю urlRoot в позвоночнике /jsontest.php и я помещаю этот файл в тот же каталог (в localhost), он работает просто отлично.

Но когда я изменяю это на http://phalconapi/jsontest.phpтогда это не сработает. Используя Google Chrome Developer Tools, я заметил сообщение «Этот запрос не содержит данных ответа». и это не обнаружилось в другом тесте, используя /jsontest.php как urlRoot, Прямо там это должно показать {"test":1},

0

Решение

Исправлено путем установки заголовков контроля доступа на API:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: X-Requested-With');
header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS');

Это была проблема CORS. Спасибо, Полубезумный!

Если кто-то также использует Phalcon, используйте $response->setHeader(),

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector