Windows Phone 7 / IE9 jQuery ajax «Доступ запрещен» - PullRequest
2 голосов
/ 29 января 2012

Я пытаюсь использовать следующий код с jQuery на Windows Phone 7.5. Каждый раз, когда я пытаюсь сделать запрос AJAX для XML, я получаю сообщение «Отказано в доступе» из обработчика ошибок. JSONP не будет работать в этом сценарии, к сожалению, поскольку мне нужны только данные в формате XML. Я не уверен, как бы я решил эту проблему.

Редактировать: я должен отметить, что код отлично работает на Chrome и Safari. У меня нет машины Windows для тестирования на IE, однако. Редактировать 2: протестировано на IE9 с той же ошибкой.

JavaScript:

function loadData(index) {
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
   $.ajax({
       url: "http://foo.bar/some.xml",
       dataType: "xml",
       success: parseData,
       error: function(XMLHttpRequest, textStatus, errorThrown) { 
         alert("Status: " + textStatus); alert("Error: " + errorThrown); 
       } 
   });
};

php прокси для получения xml

<?php
header('Content-type: text/xml');
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");

$intme = date('YmdHis');
$start = $_GET['ind'];
$url = "http://some.data.source/data.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

1 Ответ

0 голосов
/ 18 июля 2013

Не знаю, как насчет простого JQuery, но когда я работал с phonegap, я столкнулся с той же проблемой и написал следующее:

Перед выполнением запроса AJAX вы должны разрешить междоменные запросы и поддержку ядра, установив:

jQuery.support.cors = true;
$.mobile.allowCrossDomainPages = true;

Они должны быть установлены в функции «PhoneReady» для определенной телефонной щели, например:

document.addEventListener('deviceready', function () {
            jQuery.support.cors = true;
            $.mobile.allowCrossDomainPages = true;
            $.ajax({
                url: "www/about.txt",
                dataType: 'text'
            }).done(function (result) {
                    alert(result);
                });
            });

2.2.url

При создании ориентированного на Windows Phone 8 приложения в запросе AJAX вы ДОЛЖНЫ указать полный путь к ресурсу, например: url: "www / about.txt",

Создание Windows Phone 8ориентированное приложение, в запросе AJAX НЕ ДОЛЖНО указываться полный путь к ресурсу, например: url: "about.txt",

2.3.Расширения исходного файла

Будьте осторожны, используя неизвестные файлы расширения, такие как расширение шаблона * .tpl или подобное.Иногда AJAX их не любит, я предлагаю использовать простые расширения * .txt и * .html.

3.getJSON

Каким-то образом $ .getJSON не работает на Windows Phone, например:

 $.getJSON('www/jsonfiles/jsonfile.txt',
              function(data, status, jqXHR) {
                if(status == "success") {
                    alert(data);
                }
              });

Вы можете заменить его на AJAX-запрос следующим образом:

 $.ajax({
        url: 'www/jsonfiles/jsonfile.txt',
        dataType: 'text'
    }).done(function (result) {
        Alert( JSON.parse(result));
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...