2012-04-11 49 views
13

可能重复:
jquery - Read a text file?读取文本文件与jQuery

我想读本地文本文件,使用jQuery。所以,我试试这个:

$.get('file_to_read.txt', function(data) { 
    do_something_with(data) 
}); 

然而,jQuery的解释“file_to_read.txt”为html文件,我得到一个JavaScript错误,因为它的格式不正确和“do_something_with”没有其预期的效果,因为数据是不是一个字符串。

jQuery doc说我需要指定数据类型。但是,他们只列出html,xml,json和脚本作为可能的数据文件;我应该如何处理一个普通的txt文件,我想直接加载到一个字符串中?

+0

为什么你不HTML格式得到它,然后将其转换它来串? – 2012-04-11 19:23:28

+0

可能的美味http://stackoverflow.com/questions/1981815/jquery-read-a-text-file – coder 2012-04-11 19:23:31

+0

你不能用jQuery读取“本地”文本文件。 jQuery无法访问客户端文件系统。你的意思是“本地”,因为在你的域名的一部分? – meagar 2012-04-11 19:25:10

回答

30

在您的$.get()请求中使用'text'数据类型。

$.get('file_to_read.txt', function(data) { 
    do_something_with(data) 
}, 'text'); 
// ^------last argument 

否则,jQuery会猜测返回的内容。


Remeber,$.get仅仅是$.ajax的便捷包装器。该数据类型在$.ajax() docs上市...

的dataType

默认:智能猜测(XML,JSON,脚本或HTML)

,你期待的数据类型从服务器返回。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将生成XML,在1.4中JSON将生成一个JavaScript对象,在1.4脚本中将执行该脚本,而其他任何东西都将作为字符串返回)。可用类型(以及作为成功回调的第一个参数传递的结果)为:

“xml”:返回可以通过jQuery处理的XML文档。

“html”:将HTML作为纯文本返回;包含的脚本标记在插入到DOM中时被评估。

“脚本”:将响应评估为JavaScript并将其作为纯文本返回。除非缓存选项设置为true,否则通过向URL追加查询字符串参数“_ = [TIMESTAMP]”来禁用缓存。注意:这会将POST转换为远程域请求的GET。

“json”:将响应评估为JSON并返回JavaScript对象。在jQuery 1.4中,JSON数据以严格的方式被解析;任何格式不正确的JSON都会被拒绝并引发解析错误。 (有关正确的JSON格式的更多信息,请参阅json.org。)

“jsonp”:使用JSONP加载JSON块。添加额外的“?callback =?”到您的URL的末尾来指定回调。除非缓存选项设置为true,否则通过向URL追加查询字符串参数“_ = [TIMESTAMP]”来禁用缓存。

“text”:纯文本字符串。

多个以空格分隔的值:从jQuery 1.5开始,jQuery可以将数据类型从它在Content-Type标头中收到的内容转换为您需要的内容。例如,如果您希望将文本响应视为XML,请将“text xml”用于dataType。您还可以创建JSONP请求,将其作为文本接收,并由jQuery解释为XML:“jsonp text xml”。同样,诸如“jsonp xml”之类的简写字符串将首先尝试从jsonp转换为xml,并且如果失败,则从jsonp转换为文本,然后再从文本转换为xml。

+0

谢谢。为了将来的参考:我怎么知道“文本”是一个合法的数据类型通过?我没有在jQuery文档中看到。 – 2012-04-11 19:31:03

+2

@GadiA:我只是用'$ .ajax'的文档更新了我的答案。像'$ .get'这样的方法只是'$ .ajax'的封装,所以你通常应该参考这些文档。 – 2012-04-11 19:32:16

+0

是否可以从html'file'上传控件读取文本文件? – 2013-04-23 07:18:25

1

尝试的dataType“文本”(或“HTML”,如果你没有HTML“脚本”标签它应该工作)