Вытягивание JSON в phonegap приводит к 404

Я пытаюсь настроить запрос JSON для PhoneGap, который извлекает JSONP, созданный с помощью шаблона Expression Engine< /а>. Если я перейду непосредственно на свою страницу JSON, http://www.lcbcchurch.com/mobileJSON/homeslideshow, я получаю правильный вывод. Попытка втянуть его в мое приложение для iphone (phonegap) — это совсем другая история. Пишет, что не может быть найден (404) в консоли. Я проверил все свои ссылки и думаю, что правильно использую метод обратного вызова, но, похоже, ничего не работает. Пожалуйста помоги. Вот мой код для плагина EE:

{exp:json:entries channel="slideshow" jsonp="yes" callback="{segment_3}" content_type="application/javascript"}

и код приложения:

<!DOCTYPE html>
<html>
    <head>
        <title>PhoneGap Ajax Sample</title>
        <script type="text/javascript" src="phonegap.js"></script>
        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript">
            $.ajax({
                       url: "http://www.lcbcchurch.com/mobileJSON/homeslideshow/results",
                       dataType: "jsonp",
                       jsonp: false
                       });
                function results(data) {
                    console.log(data);
                }

            </script>


    </head>
    <body>
        <div id="main">

        </div>
    </body>
</html>

person nate8684    schedule 16.02.2012    source источник


Ответы (1)


Вы убедились, что внесли в белый список все внешние хосты в своем проекте xcode? также ваш вызов ajax выглядит немного не так... У вас есть обратный вызов, добавленный как каталог против аргумента.. если вы удалите это и просто вызовете функцию успеха, это сработает.

с phonegap вам не нужно беспокоиться о перекрестном домене, все, что вам нужно сделать, это внести в белый список все домены в вашем проекте xcode, добавив новое значение для externalHosts в вашем файле phonegap.plist - установите ключ на «веб-сайты» и значение на « *' это все.

$.ajax({
  url: "http://www.lcbcchurch.com/mobileJSON/homeslideshow",
  dataType: "json",
  success:function(data){
    results(data);
  }
});

function results(data) {
  for(var i = 0; i<data.length;i++){
    // this will log all of the images url
    console.log(data[i].image); // just access the part you want by it's name.
  }
}
person Drew Dahlman    schedule 16.02.2012
comment
чтобы напечатать объект, вы можете просто запустить цикл. Я обновил свой ответ для этого. - person Drew Dahlman; 16.02.2012
comment
Я думаю, это сработало. Как лучше всего напечатать этот результат в теге ‹img›? - person nate8684; 16.02.2012
comment
извините, только что увидел ваш циклический ответ. Позвольте мне попробовать это! - person nate8684; 16.02.2012
comment
$(#someelement).append(‹img src='+data[i].image+'›); положить это в цикл - person Drew Dahlman; 16.02.2012
comment
Глядя на ваш код, разве это не будет писать их только в консоли? Мне нужно записать их на страницу в теге img - person nate8684; 16.02.2012
comment
Где вы помещаете изображение, я должен указать имя поля? Выдает ошибку Не могу найти переменную: изображение Я извлекаю больше полей, чем просто изображение. console.log(данные[i].slideshow-image); $(#main).append(‹img src='+data[i].slideshow-image+'›); - person nate8684; 16.02.2012
comment
Дрю... ты великолепен. Большое спасибо за вашу помощь здесь. В конце концов я понял, что ему не нравятся персонажи. Поэтому мне пришлось изменить некоторые вещи в моей cms, чтобы заставить ее работать. Есть ли способ заставить работать, или мне следует избегать их использования вместе? - person nate8684; 16.02.2012
comment
Потрясающий! рад, что смог помочь :) хм, это странно. Я знаю, что _ работает, я никогда не использовал - в моем json возвращается... - person Drew Dahlman; 16.02.2012