我想知道用户在我的 Javascript 代码中输入的给定 url 的内容类型。实际上,我有一个下拉列表(html、csv、xls 等),我想这样做,所以当用户输入 url 时,我想检测 url 内容的类型,并根据这种类型我想要设置我的下拉列表的值(html、csv、xls 等)。我知道,我可以像这样使用 Ruby 获取内容类型:
require 'open-uri'
str = open('http://example.com')
str.content_type #=> "text/html"
或者,我也可以使用 curl 获取内容,然后解析它以了解内容类型。但是,由于我上面解释的需要,我需要在我的 Javascript 代码中执行此操作。有什么想法吗?
EDIT_1:
我在我的 javascript 中试过这段代码:
$("#wiki_form_url").change(function(){
$.ajax({
type: "GET",
url: "content.rb",
data: {
// input_url: $("#wiki_form_url").val()
},
dataType: "html"
}).done(function (data) {
// `data` contains the content-type
alert('Success !!!');
}).fail(function () {
alert("failed AJAX call");
});
});
我有一个 ruby 脚本 content.rb,我在里面做:
require 'open-uri'
str = open('http://www.ofdp.org/benchmark_indices/25')
str.content_type
但是,它似乎不起作用。我遇到 Ajax 失败。可能是因为脚本 content.rb 的 url 路径?我应该如何在这里指定脚本路径? (相对或绝对)
最佳答案
same origin policy防止您使用客户端 JavaScript 直接发现有关任意 URI 的信息(您控制的 URI 是另一回事)。
您需要使用另一种技术(例如服务器端 Ruby)来获取该信息。
您可以通过简单地向服务器提交表单并向浏览器返回一个新网页来做到这一点。
如果您不想离开页面,那么您可以使用Ajax 传递数据。那里不乏 Ajax 教程,here is a good one from MDN .
关于javascript - 如何在 Javascript 中获取给定 url 的内容类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685866/