如何在Javascript中获取给定url的内容类型
How to get content type of a given url inside Javascript?
我想知道用户在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脚本内容。
require 'open-uri'
str = open('http://www.ofdp.org/benchmark_indices/25')
str.content_type
但是,它似乎不起作用。我得到Ajax失败。可能是因为脚本内容的url路径。rb吗?我应该如何在这里指定脚本路径?(相对或绝对)
同源策略防止您使用客户端JavaScript直接发现任意uri的信息(您控制的uri是另一回事)。
您需要使用另一种技术获得该信息,例如您的服务器端Ruby。
您可以通过简单地向服务器提交表单并向浏览器返回一个新网页来实现这一点。
如果不想离开页面,那么可以使用Ajax传递数据。这里不乏Ajax教程,这里有一个来自MDN的好教程。
下面是一个AJAX调用的示例:
$(document).ready(function () {
$("#button_check").on("click", function () {
$.ajax({
type: "GET",
url: "Your URL",
data: {
input_url: $("#textbox_id").val()
},
dataType: "html"
}).done(function (data) {
// `data` contains the content-type
alert(data);
}).fail(function () {
alert("failed AJAX call");
});
});
});
你的HTML是这样的:
<input type="text" id="textbox_id" />
<input type="button" id="button_check" value="Submit" />
你的Ruby代码应该是这样的:
require 'open-uri'
class TestController < ApplicationController
def index
req = open(params[:input_url])
render :text => req.content_type
end
end
我以前从未使用过RoR,所以我不知道这是否正确或是否有效。但当我在几个教程中摸索时,我很快就想到了这一点。这只是你似乎在寻找的概念。您需要弄清楚如何将URL映射到此方法,然后更新AJAX选项url
以使用该方法。
所以在Javascript代码中-在done
方法中,这意味着整个AJAX请求是成功的,data
变量应该包含Ruby代码req.content_type
的结果。
在@Ian的大力帮助下,我终于弄清楚了整件事。这是我完成的代码:在javascript文件:
$("#wiki_form_url").change(function () {
$.ajax({
type: "GET",
url: "/wiki_forms/content",
data: {
input_url: $("#wiki_form_url").val()
},
dataType: "text"
}).done(function (data) {
// `data` contains the content-type
alert('Success');
console.log(data);
// alert(data);
}).fail(function () {
alert("failed AJAX call");
});
});
在我的wiki_forms控制器中,我创建了一个名为content:
的新方法 def content
req = open(params[:input_url])
render :text => req.content_type
end
在routes中添加一条新路由。Rb文件:
get "/wiki_forms/content" => 'wiki_forms#content'
,并使用/wiki_forms/content作为ajax请求url。
- 类型错误:url未定义extjs 4正在填充组合框
- 如何使用URL筛选wordpress自定义帖子类型
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- 处理HTML类型'电子邮件''url'使用JavaScript
- 用于自动将一种类型的URL更改为另一种类型
- 未捕获的类型错误:$(..).modal不是具有远程url的函数
- 使用 if - JS 将文件类型附加到 url
- Angular 2:HTTP Post Request,带有URL参数和正文类型参数
- 谷歌URL缩短器API-未压缩类型错误:未定义不是一个函数
- 当数据类型为XML时,如何将url参数传递给AJAX jquery
- HTML 输入类型=“url” 表示 效果
- 使用 JavaScript 的不同类型的网站 URL 的正则表达式
- 无法访问父 SharePoint URL.未捕获的类型错误: 无法读取未定义的属性“get_web”
- 如何在 S3 AWS 中为对象创建签名 URL 时设置内容类型
- Yesod:在 AJAX 调用中使用类型安全的 URL
- Ember.js 在 App.Route 中指定位置=“历史记录”的 URL 类型时出错
- 使用本机输入类型=“date” 的 jQuery UI 的协议相对 URL 方法
- 未捕获的类型错误:无法读取未定义的属性“url” - Google Image API
- 将字符串中的 url 替换为 href 链接 - 适用于多种地址类型
- 一个人能做一个真正的帖子吗?不是var=val url类型post)与AJAX XMLHttpRequest