2009-08-25 8 views
1

Я занимаюсь разработкой веб-приложения iPhone со штрих-кодом. Мое приложение отлично работает, когда я просматриваю его с помощью симулятора iphone. Когда я развертываю его на веб-сервере, я никогда не получаю ответа от XMLHttpRequests. Вот код, я использую:iPhone dashcode xmlhttprequest no response

function get(feedURL, handler) { 
    var onloadHandler = function() { handler(xmlRequest); };  
    var xmlRequest = new XMLHttpRequest(); 
    xmlRequest.onload = onloadHandler; 
    xmlRequest.open("GET", feedURL); 
    var credentials = encodeBase64(_login.username + ':' + _login.password); 
    xmlRequest.setRequestHeader("Authorization", "Basic " + credentials); 
    xmlRequest.send(); 
} 

Когда я прилагаю обработчик onreadystatechange, я могу видеть запрос переходит в состояние 4. Я могу также увидеть запросы в моих журналах сервера. Я также добавил заголовок запроса «без кэша», который не помог. Я попробовал это на локальном веб-сервере на пакете хостинга, который у меня есть, и мне не удастся заставить его работать.

+0

Так 'responseText' пустая строка, когда' 'readyState' достигает 4'? – kangax

+0

Да, это kangax – dlinsin

+1

Вы буквенно-цифровое имя пользователя и пароль? Я заметил использование стандартных SDK, что iPhone немного шелушился с Basic Auth. Вы пытались использовать http: // user: password @ host/path URL вместо ручной настройки заголовка? XML-запрос, вероятно, не планирует обрабатывать заголовки Basic Auth, которые он получает в ответ, и ничего не возвращает. В зависимости от имени пользователя и пароля вам необходимо будет закодировать их, чтобы привязать их к URL-адресу. –

ответ

0

Возможно, попробуйте новые возможности отладки, которые являются частью DashCode 3.0 (новый со Snow Leopard)? На самом деле не ответ, но, возможно, изменение декораций - или нового отладчика - трясет что-то свободное.

1

Возможно, iPhone не получит базовые заголовки Auth, так как вы вручную настроили заголовок запроса. Попробуйте добавить имя пользователя и пароль к URL (после кодирования процента) и запустить запрос таким образом.

2

Снимок в темноте, но apple docs сказать это.

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

Каковы значения статуса и statusText? Также попробуйте getAllResponseHeaders() для получения дополнительной информации.

Кроме того, если это только основные аутентификации вы хотите, вы можете просто передать его открыть() следующим образом:

open("method", "URL", asyncFlag, "userName", "password")