$ .get возвращает «[объект документа]» в симуляторе iPhone с PhoneGap - PullRequest
1 голос
/ 16 февраля 2012

Я пытаюсь выполнить простой запрос $.get() для локального файла в моем (XCode) iPhone-симуляторе (используя PhoneGap), но результат продолжает возвращаться как "[object Document]" (через оповещение) вместо фактическое содержание файла.

Однако, когда я тестирую его в Google Chrome, у меня вообще не возникает проблем. Странно то, что я могу $.load() локальную страницу без проблем (в симуляторе iPhone), но когда я пытаюсь $.get(), она не будет работать.

Вот мой index.html код:

<script type="text/javascript" src="js/phonegap.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>

<div class="load"></div>

<script>

    $.get('content/view/images.html', function(data) {

        alert(data); // returns "[object Document]"

    });

    $('.load').load('content/view/images.html'); // returns actual file content

</script>

Вот мой content/view/images.html код:

<img src="http://static.example.com/images/{$file_key}.{$file_type}" style="max-width: 100%; max-height: 200px;" />

Однако, когда я изменяю содержимое content/view/images.html на что-то вроде LOL, оно будет правильно $.get() it.

Есть идеи, что происходит в мире?

Ответы [ 2 ]

11 голосов
/ 16 февраля 2012

Если вы не укажете jQuery иначе, он будет угадывать, что делать с данными, возвращающимися на основе типа MIME, отправляемого с данными.Если вы возвращаете документ, возвращаемый тип MIME должен быть XML (поэтому предположительно ваша HTML-страница имеет вид X HTML, или, по крайней мере, так говорит сервер).(См. Документацию $.ajax для опции dataType; jQuery создает документ только при работе с XML.)

Вы можете сказать jQuery, что вы всегда хотите, чтобы он был в виде текста.задав ему dataType, который является аргументом сразу после обработчика успеха в $.get:

$.get('content/view/images.html', function(data) {

    alert(data);

}, "text");
// ^--- new bit

... или вы можете указать его для объекта параметров с помощью$.ajax:

$.ajax({
    url: 'content/view/images.html',
    dataType: "text",        // <=== new bit
    success: function(data) {

        alert(data);

    }
});
1 голос
/ 16 февраля 2012

попробуйте это:

$.ajax({
  url: 'content/view/images.html',
  success: function(data) { alert(data); },
  dataType: "text"
});
...