$ .get在带有PhoneGap的iPhone模拟器中返回“[object Document]”

时间:2012-02-16 11:58:53

标签: jquery xcode cordova ios-simulator

我正在尝试对我的(XCode)iPhone模拟器中的本地文件执行简单的$.get()请求(使用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()

关于世界上发生了什么的任何想法?

2 个答案:

答案 0 :(得分:11)

除非你告诉jQuery,否则它会猜测如何根据与数据一起发回的MIME类型返回数据。如果您要取回文档,则返回的MIME类型必须是XML(因此可能您的HTML页面是 X HTML,或者至少是服务器所说的内容)。 (请参阅dataType选项上的$.ajax文档; 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 :(得分:1)

试试这个:

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