$ .getJSON в PhoneGap не работает

0
var app = {
    // Application Constructor
    initialize: function() {
        $.getJSON( "http://domain.com/api/data")
          .done(function( json ) {
            alert("SUCCESS!");
          })
          .fail(function( jqxhr, textStatus, error ) {
            alert("Failure! Error: " + error);
        });
    },
    // Bind Event Listeners
    //
    // Bind any events that are required on startup. Common events are:
    // 'load', 'deviceready', 'offline', and 'online'.
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    // deviceready Event Handler
    //
    // The scope of 'this' is the event. In order to call the 'receivedEvent'
    // function, we must explicity call 'app.receivedEvent(...);'
    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },
    // Update DOM on a Received Event
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        var listeningElement = parentElement.querySelector('.listening');
        var receivedElement = parentElement.querySelector('.received');

        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');

        console.log('Received Event: ' + id);
    }
};

app.initialize();

При запуске сценария выше я вижу следующее предупреждение: "Failure! Error: ". Аргумент error не имеет значения, поэтому мне трудно найти, где проблема на самом деле. Большинство других вопросов с этим названием имеют лучший ответ, так как не добавляя домен конечной точки, я могу это исключить:

Чтобы просмотреть файл config.xml, нажмите здесь.

Вы увидите, что я установил origin="*" который должен обеспечивать связь со всеми конечными точками независимо от того, какой домен. Любые идеи относительно того, почему это происходит?

ОБНОВИТЬ

Это как-то связано с моим сервером, так как другие серверы показывают сообщение "SUCCESS". Тем не менее, чтобы найти конкретную проблему. По какой-то причине мой сервер, похоже, не похож на запросы с кросс-началом... Я отключил брандмауэр, но не успел. Просто хотел бы подтвердить, что запросы работают отлично, если на одном URL-адресе.

Серверные сайты с поддержкой /000-default.conf:

<VirtualHost *:80>
    Header add Access-Control-Allow-Origin "*"
    Header add Access-Control-Allow-Methods "GET, OPTIONS"

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • 0
    На каком веб-сервере работает служба? Попробуйте установить для заголовка разрешения опции OPTIONS для службы.
  • 0
    @MortenOC Запустив Ubuntu 12.04, Apache 2.4.7, попробую это сейчас и сообщу через секунду, спасибо
Показать ещё 5 комментариев
Теги:
cordova

1 ответ

1
Лучший ответ

Решение этого:

В вашем .htaccess на сервере добавьте эту строку

Header set Access-Control-Allow-Origin "*"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню