我有一个页面,我想在其中显示几个MySQL表 右边有一个表,只有在选择了不同的人时才会改变 第二张桌子是中心的主桌子。我有一个包含每个人的下拉框。所选人员的结果显示在中间表格中。每个人都有多个结果,因此有第二个下拉框可供您选择要显示的结果。这是由Ajax XMLHTTP请求完成的。
问题是右表使用了一些javascript。我知道Ajax结合XMLHTTP请求是不可能的。但没有JavaScript我无法做出我想要的东西。有没有办法,在javascript完成他的工作后显示正确的表格?
我现在使用框架。这不是很好。因为我必须将两个页面的样式放在一起才能看起来很好,这并不像说的那么容易。但这样做就像我想要的那样。
所以我搜索了互联网(很长一段时间),在我想放弃之前几分钟我找到了这段代码(来自http://www.javascriptkit.com/dhtmltutors/ajaxincludes.shtml):
function HttpRequest(url){
var pageRequest = false //variable to hold ajax object
/*@cc_on
@if (@_jscript_version >= 5)
try {
pageRequest = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try {
pageRequest = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e2){
pageRequest = false
}
}
@end
@*/
if (!pageRequest && typeof XMLHttpRequest != 'undefined')
pageRequest = new XMLHttpRequest()
if (pageRequest){ //if pageRequest is not false
pageRequest.open('GET', url, false) //get page synchronously
pageRequest.send(null)
embedpage(pageRequest)
}
}
function embedpage(request){
//if viewing page offline or the document was successfully retrieved online (status code=2000)
if (window.location.href.indexOf("http")==-1 || request.status==200)
document.write(request.responseText)
}
}
HttpRequest("external.htm") //include "external.htm" onto current page
此代码完美运行......第一次。一旦你改变了这个人,整个页面就会消失,只有表格显示出来,而firefox会一直“加载”页面(你看到那个圆圈转了)。我知道如何编辑上面的代码以满足我的需求,但我不了解Ajax或如何解决这个问题。希望有人可以帮助我,给我一个很好的解决方案!并告诉我为什么上面的代码不能正常工作?
提前致谢!
Milaan
答案 0 :(得分:2)
document.write
仅在首次加载页面时有效。页面呈现完成后,调用document.write
将首先清除页面。
https://developer.mozilla.org/en/document.write
您可能想要做的是:
if (window.location.href.indexOf("http")==-1 || request.status==200) {
var elm = document.createElement('div');
elm.innerHTML = request.responseText;
document.getElementsByTagName('body')[0].appendChild(elm);
}
答案 1 :(得分:0)
我已经看了很长时间了,因为我看过这样的代码,但我看到的一个问题是你在XMLHttpRequest
中没有包含任何变量;没有用户ID或任何东西。是否应该加载静态页面?
你有什么理由不能使用像jQuery这样的库吗?这不是神奇的子弹,但它会让你的生活和ajax要求更容易。
答案 2 :(得分:0)
您可能希望使用dom功能将下载的内容添加到现有文档中,例如:
document.getElementById('mypanel').innerHTML = '<html code goes here>';
最好的想法可能是使用一个简洁的javascript框架谎言jquery,它可以帮助您实现浏览器兼容性。
答案 3 :(得分:0)
jQuery应该让事情变得更容易。你的代码应该是这样的。
$.post("somepage.php", function(data){
$("#divID").html(data);
});
<div id="divID"></div>
somepage.php
可能是这样的:
<?php
// get table content
echo "<table>...</table>";
?>