我正在一个网站上工作,并使用Ajax按id名称(“mbody”)更新正文。该网站按预期运行,但后来我意识到,我在responseText中返回了整个页面数据,并用此响应更新了“mbody”。
请记住,responseText确实为body包含了自己的“mbody”id名称。
我不明白的是,为什么网站没有搞砸?我将整个页面的副本粘贴在DOM中已经存在的页面副本中。此后,我将Ajax更新从“mbody”更改为“mbody”。innerHTML,以更新HTML标记,因为我要返回整个页面。
如果你想知道是否有必要返回整个页面,答案是肯定的,因为页面上的内容从上到下、从屏幕到屏幕都在变化,所以我更喜欢返回整个HTML。
那么,Ajax是否意识到我在responseText中有一个“mbody”,并自动用当前的DOM“mbody”更新该部分,或者它真的在DOM中已经存在的“mbody”中放置了一个新的html页面源?
我只是想了解Ajax在这种情况下的行为。同样,我的网站是完美的,即使我只返回身体部分的整个html源代码。
// the response is returning an html page, while mbody is the current
//DOM body tag's ID
mbody.innerHTML = this.responseText;
//i later set the response to update the entire html; pseudo example
htmltag.innerHTML = this.responseText;
无论哪种方式,网站的功能都是完美的,但在当前的正文中粘贴一个完整的页面更新,我只是不明白这怎么会不会导致问题或破坏布局或其他东西。