在ajax success </title>上替换<title>

时间:2013-11-28 11:59:50

标签: jquery ajax

我首先获得此代码以获取当前页面slug:

var site_url = document.location.origin;
var slug = href.replace(site_url,'').substring(1).slice(0,-1);

在此之后我使用函数将slug大写之前放入

function CapitalFirstLetter(string)
{
    return string.charAt(0).toUpperCase() + string.slice(1);
}

var page_title = CapitalFirstLetter(slug);

最后,我正在努力让它在ajax上取得成功:

$.ajax({
    url: href,
    success: function(data) {
       // update the page title
       document.title = page_title;
    }
});

但没有任何反应


我现在有一些解决方案

我最终使它工作,因为我正在通过ajax加载页面,我决定更改标题而不是ajax成功,但在每个页面内添加这样的脚本

$(function() {
    var loc = document.location.href;
    var site_url = document.location.origin;
    var slug = loc.replace(site_url,'').substring(1).slice(0,-1);
    var page_title = CapitalFirstLetter(slug);
    document.title = page_title;
});

现在效果很好,但我不确定这个好方案是否合适?

2 个答案:

答案 0 :(得分:1)

$.ajax({
    url: href,
    success: function(data) {
       // update the page title
   $("title").text(page_title);
    }
});

参考 text()

答案 1 :(得分:0)

我认为问题是你的ajax调用是在set_title-variable设置之前完成的,请参阅此fiddle作为演示。

您可以修复它,例如使用

延迟ajax调用
setTimeout(function() {
    $.ajax({
      url: href,
      success: function(data) {
      // update the page title
       document.title = page_title;
      }
   });
}, 100);

或者使用ajax-functions beforesend生成标题:

var page_title;

$.ajax({
      url: href,
      beforeSend: function() {
         page_title = ...  // generate the title...
      },
      success: function(data) {
      // update the page title
       document.title = page_title;
      }
   });