我正在尝试对我的(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()
。
关于世界上发生了什么的任何想法?
答案 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"
});