AJAX XML не работает на BlackBerry с Web-Works или Phonegap

Я создал приложение, которое загружает статистику из внешнего XML-файла в Интернете.

Он отлично работает в веб-браузере. Он также отлично работает, когда я упаковываю его с PhoneGap для Android.Works on BlackBerry Playbook as well.

Однако он не работает, когда я упаковываю его для BlackBerry. Я пробовал как инструмент командной строки WebWorks и PhoneGap.

When I Package with WebWorks and Run on Simulator

Консоль в Web Inspector выдает мне ошибку

& Quot;Failed to load resource: the server responded with a status of 500 (Error requesting resources.)& Quot;

When I Package with Phonegap and Run on Simulator

Когда я отправляю пакет с PhoneGap вместо WebWorks, я получаю следующие ошибки в предупреждениях ...

gap : ["Network Status", "getConnectionInfo","Network Status0",true]

gap: ["Device","getDeviceInfo","Device1",true]

gap_init:

gap_callbackServer:

gap_poll:

Живая версия приложения (Неоткомпилированные)

ZIP-файл для запуска в WebWorks или Phonegap

похожий вопрос без ответа.

Youtube видео проблемы в симуляторе BlackBerry

Things I've Tried

Я добавил в свой конфигурационный файл.

<access subdomains="false" uri="*"/>

Я добавил функцию $ .support.cors.по предложению phonegap.

$( document ).bind( "mobileinit", function() {
    // Make your jQuery Mobile framework configuration changes here!
    $.mobile.allowCrossDomainPages = true;
});
 Wes Johnson31 мая 2012 г., 21:10
Какие сообщения вы получаете в консоли webinspector при работе на симуляторе? Глядя на вашу живую версию, ссылка на ваш скрипт заголовка webworks.js приводит к 404 ... хотя я не уверен, что у вас там работает.
 Philip Kirkbride01 июн. 2012 г., 15:34
В версии, которую я упаковал, был webworks.js, я добавил ее в живую. Web Inspect дает мне сообщение «Не удалось загрузить ресурс: сервер ответил со статусом 500 (Ошибка при запросе ресурсов.)» & Quot;

Ответы на вопрос(3)

Решение Вопроса

Ваш симулятор и WebWorks SDK обновлены?

Я протестировал на живом PlayBook с 2.0.1.358 и в симуляторе для 2.0.0.7971 без проблем, которые я вижу.

Я упаковал пакет 2.2.0.15 WebWorks для PlayBook SDK, и единственное, что я изменил, - это идентификатор в config.xml, который не был принят в упаковщике с точками.

Хорошо, теперь я вижу, в чем проблема.

Это довольно неясно, но симы Java Smartphones настроены для работы с другим старым инструментом симулятора, называемым MDS Simulator. Это не является действительно необходимым для большинства вещей, но обеспечивает сетевое взаимодействие, подобное тому, что устройство видит в корпоративной среде BES. Симулятор считает, что у него есть то, что называется «MDS». постоянное соединение, даже если MDS Simulator не работает.

С приложением WebWorks, если вы используете файл config.xml по умолчанию без<rim:connection> тег (что вполне нормально для большинства случаев), он устанавливает приоритет MDS перед параметрами TCP. Это проблема, потому что сим думает, что он имеет MDS-соединение, когда он на самом деле этого не делает, и эта попытка соединения в конечном итоге терпит неудачу.

Если вы добавите следующий фрагмент кода в ваш config.xml, это уменьшит приоритет MDS и должно заставить его работать нормально.

<rim:connection timeout="60000">
    <id>BIS-B</id>
    <id>TCP_WIFI</id>
    <id>TCP_CELLULAR</id>
    <id>MDS</id>
    <id>WAP2</id>
    <id>WAP</id>
</rim:connection>

И последний критический пункт - вам нужно настроить симулятор для использования имитируемой сети Wi-Fi. Нажмите на верхний баннер на главном экране (по индикатору беспроводной сети), затем включите Wi-Fi и нажмите Сеть Wi-Fi в Параметры и Статус. Затем щелкните по сети WLAN по умолчанию и выполните действия, чтобы связать ее.

 Philip Kirkbride11 июн. 2012 г., 15:17
Вот видео моего тестирования на 7.1 с 9810, и оно не работаетyoutu.be/_XkTZOQ-ugY пожалуйста, разместите видео, чтобы я мог видеть, что вы сделали по-другому.
 Philip Kirkbride12 июн. 2012 г., 17:36
SWEET работает на BB6 & amp; 7!
 11 июн. 2012 г., 21:30
Ах, это показывает, где проблема. Я добавлю его в качестве полного ответа, чтобы у меня было свободное место.
 Philip Kirkbride07 июн. 2012 г., 21:11
Отлично работает на Playbook, вопрос в том, чтобы заставить его работать на BB 6 & amp; 7.
 08 июн. 2012 г., 21:59
Хорошо, проверил его на 7.1.0 на 9810, и он все еще работает нормально. На какой ОС вы тестируете?

webworks.js, Я не уверен, где вы взяли эту библиотеку, но она кажется немного старой.

WebWorks должен автоматически предоставлять API-интерфейсы javascript, которые вы запрашиваете в файле конфигурации (т. Е.window.blackberry.*) без необходимости делать запросы, как вы должныhttp://localhost:8472/blackberry/extensions/get.

Так как вы просто делаете вызовы AJAX, я отбросил все это и сосредоточился на отладке вашего AJAX-кода.

PS: Phonegap работает поверх WebWorks, поэтому дальнейшее абстрагирование скорее всего не решит вашу проблему.

 Philip Kirkbride02 июн. 2012 г., 21:46
о, я думал, что вам нужно иметь webworks.js в вашем приложении, чтобы упаковать его в WebWorks?
 Philip Kirkbride01 июн. 2012 г., 19:20
Не могли бы вы дать мне ссылку на обновленный webworks.js
 Philip Kirkbride01 июн. 2012 г., 20:07
Найдены и обновлены веб-работы. Все еще не работает, хотя.
 02 июн. 2012 г., 18:58
Я имел в виду, что вы должны полностью избавиться от него, если вы его не используете, что, как я полагаю, вы не ..., поскольку, несмотря на актив 404 'd, я все еще мог бы использовать вашу живую версию.

точников. Вы, вероятно, должны использовать CORS

Включите его на стороне сервера:http://enable-cors.org/

В вашем javascript используйте это для запроса удаленного контента:

// Create the XHR object.
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
    // XHR for Chrome/Safari/Firefox.
    xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
    // XDomainRequest for IE.
    xhr = new XDomainRequest();
    xhr.open(method, url);
} else {
    // CORS not supported.
    xhr = null;
}
return xhr;
}

// Make the actual CORS request.
function makeCorsRequest() {

var url = "http://www.example.com/";

var xhr = createCORSRequest('GET', url);

if (!xhr) {
    alert('CORS not supported');
    return;
}

// Response handlers.
xhr.onload = function() {
    var text = xhr.responseText;
    // Do something with returned text data
};

xhr.onerror = function() {
    alert('Woops, there was an error making the request.');
};

xhr.send();
}

от:http://supportforums.blackberry.com/t5/Web-and-WebWorks-Development/AJAX-from-external-website-not-working/m-p/1736733#M24128

Ваш ответ на вопрос