Использование $ .getJSON в приложении WP7 PhoneGap (Cordova) (v1.5) - PullRequest
2 голосов
/ 15 марта 2012

Я только что закончил приложение PhoneGap на iOS, теперь пришло время перенести его на WP7. Приложение должно читать и анализировать файл JSON.

$.getJSON("xml-json/myfile.json",function(data){ 
 // do cool things
});

Но когда эта строка кода выполняется, выдается какая-то ошибка (нет способа отладки, поэтому я не знаю, что это за ошибка), и выполнение не продолжается. Есть идеи, что не так в этом коде? Этот код отлично работает в версии PhoneGap для iOS.

Эта ошибка выдается в промежуточном окне: Журнал: «Wrapped XHR получил ошибку от FileAPI :: [object Object]»

Следуя советам, я попытался использовать $ .ajax вместо $ .getJSON. И код прекрасно работает в браузере и на iOS, но не в WP7. Что-то простое, как это не работает:

функция onDeviceReady () { document.getElementById ("welcomeMsg"). innerHTML + = "Cordova готова! version =" + window.device.cordova; console.log ("onDeviceReady. Вы должны увидеть это сообщение в окне вывода Visual Studio.");

        navigator.notification.alert("readingjson");

        $.support.cors = true;

        $.ajax({
            url: "content2.json",
            dataType: 'json',
            context: document.body,
            success: function (a, b, c) {
                navigator.notification.alert("json readed");
            }
        });

        navigator.notification.alert('yeah');
    }

оповещение "readjson" сработало, да, тоже, но один "прочитанный json" выстрелил ...

Спасибо!

Ответы [ 6 ]

3 голосов
/ 08 августа 2012

Наряду с $ .support.cors также необходимо установить для $ .mobile.allowCrossDomainPages значение true.

Проверьте jQuery Mobile Docs

1 голос
/ 08 июля 2013

Я использую cordova 2.7.0, и у меня та же проблема.

Это не ошибка, но вот решение, которое мне помогло:

  1. Переместите свой код JavaScriptчтобы отделить файл и включить его в ваш HTML, чтобы избежать раздражающего инспектора HTML Visual Studio.
  2. поставить "$ .support.cors = true;"перед вызовом ajax.Я включаю его в функцию deviceready.
  3. не ставьте "$ .mobile.allowCrossDomainPages = true;"как предложено в предыдущем ответе.В моем случае эта строка вызвала зависание приложения.

Мой код выглядит следующим образом:

index.html

<script type="text/javascript" src="js/content.js"></script>
<script type="text/javascript">
  document.addEventListener("deviceready", onDeviceReady, false);

  function onDeviceReady() {
    $.support.cors = true; 
    getContents();
  }
</script>

contents.js

function getContents() {
    $.ajax({
url:"http://www.xxx.com/?getSomething",
    dataType:"json",
    error:function(xhr, status, errorThrown) {
    navigator.notification.alert('Failed', function(){}, 'Info', 'OK');
    },
    success:function(data) {
    navigator.notification.alert('Success!', function(){}, 'Info', 'OK');
    }
});
}

Простите мой английский.

1 голос
/ 15 марта 2012

Вы не очень точно указали ошибку и т. Д., Но перед вызовом JSON попробуйте установить следующее свойство:

$.support.cors = true;
0 голосов
/ 07 июня 2012

Вы говорите, что не можете получить отладочную информацию, используете PhoneGap Build?В противном случае вы должны увидеть ведение журнала из приложения в окне «Вывод» из Visual Studio (убедитесь, что вы выводите вывод из «Отладка»).

Если вы просто используете PhoneGap с Visual Studio, убедитесь, что файлы JSONвключены в проект как элементы содержимого и что ваш файл CordovaSourceDictionary.xml обновляется при сборке с этими элементами.

См .: https://stackoverflow.com/a/8902502/1441046

0 голосов
/ 16 марта 2012

Вы не указываете, какую версию Cordova вы используете, однако в v1.4 была довольно серьезная ошибка, которая означала, что запросы XHR не выполнялись.Это было исправлено в v1.5 - смотрите эту ошибку JIRA:

https://issues.apache.org/jira/browse/CB-208

Если вы используете 1.5 и все еще видите проблемы, это, вероятно, новая ошибка!

0 голосов
/ 15 марта 2012

Попробуйте родной вызов ajax, это решит проблему.

По крайней мере, он сделал это для меня.

~ K

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...