Ajax/jQuery网站标题获取器只能部分工作



我有一个简单的网站标题获取器:

$( document ).ready(function() {
$("#title").click(function() {
    var SubURL = $("#input").val(); 
    $.ajax({
  url: "http://textance.herokuapp.com/title/"+SubURL+"/",
  complete: function(data) {
    alert(data.responseText);
  }
    });
});

}(;

它的工作方式是您在$("#input"(字段中输入网站的URL,此代码将弹出带有网站标题的警报。例如,在字段中输入 www.bbc.co.uk 将提醒您正确的标题"BBC - 主页"。我的问题是,当我输入更具体的 url 时,例如 www.bbc.co.uk/newsbeat/article/39513521/the-illegal-drugs-with-legal-medical-uses 我的警报会给我"未定义"。我需要做什么才能从这个算法中获得"BBC - 家庭">"具有合法医疗用途的非法药物 - BBC Newsbeat"?

你需要对网址进行编码

http://textance.herokuapp.com/title/www.bbc.co.uk%2Fnewsbeat%2Farticle%2F39513521%2Fthe-illegal-drugs-with-legal-medical-uses%2F

您可以使用encodeURIComponent

$( document ).ready(function() {
  $("#title").click(function() {
    var SubURL = encodeURIComponent( $("#input").val() );
    $.ajax({
      url: "http://textance.herokuapp.com/title/"+SubURL+"/",
      complete: function(data) {
          alert(data.responseText);
      }
    });
  });
});

根据评论更新。

url 也不能有协议,就像 http:// 一样,所以通过此更新,添加了.replace(/(^w+:|^)///, ''),如果存在,您将被删除。

$( document ).ready(function() {
  $("#title").click(function() {
    var SubURL = encodeURIComponent( $("#input").val().replace(/(^w+:|^)///, '') );
    $.ajax({
      url: "http://textance.herokuapp.com/title/"+SubURL+"/",
      complete: function(data) {
          alert(data.responseText);
      }
    });
  });
});

最新更新