【发布时间】:2011-12-02 04:01:12
【问题描述】:
我的 AJAX 和 PHP 数据库出现问题。我敢打赌,许多其他新的 Ajax 程序员也会面临这个问题。虽然我已经缩短了代码,但它仍然有点冗长,所以请耐心等待。我在主页 index.php 上有一个按钮,单击该按钮会加载图书管理系统,因为它是 Ajax 数据库,因此图书管理系统加载到同一页面上的 div('mainDiv') 上。问题是,每当我刷新/重新加载页面(通过单击浏览器刷新按钮)打开图书管理系统时,它会意外返回带有按钮的主页。刷新页面内容应保持不变。但它永远不会在这里发生。在 Ajax 中执行它会使它变得更加复杂。有什么简单/容易的 Ajax 解决方案吗?还请指出此代码中的某些内容是否违反了良好的编程习惯。 这是我的代码: ** 数据库主页/index.php 的脚本部分**
<script language="javascript">
function submitData(dataSource,divID,formId)
{
var PostData;//assuming the form's post data has been already serialized to keep the question simple
var dataSource;
/*setting up XMLHttpRequestObject*/
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{ XMLHttpRequestObject = new XMLHttpRequest();}
else if (window.ActiveXObject)
{ XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");}
else if (window.ActiveXObject)
{ XMLHttpRequestObject = new ActiveXObject("MSXML2.XMLHTTP");}
else { alert ("XMLHttpRequestObject can not be created");}
/*processing sending of the form's post data*/
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("POST", dataSource);
XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(PostData);
}
}
</script>
数据库主页/index.php 的正文部分:
<h2>
Ajax Books Database
</h2>
<div id="mainDiv">
<form id="books-management-sys-targeting-form">
<input type="hidden" name="open-bms" value="open-jms" />
<input type="button" onclick="submitData('phpcontroller.php','mainDiv','books-management-sys-targeting-form')" value="Open Books Management System" />
</form>
</div>
当点击上面主页上的按钮时 PHP 控制器执行此代码:
/*Opening Books Management System*/
if(isset($_REQUEST['open-bms']))
{
include 'books-management-system.html.php';
}
这里是 books-management-system.html.php 代码:
//manage books categories link
<form id="to-manage-book-categories-form">
<input type="hidden" name="manage-book-categories" value="manage-book-categories" />
<a href="#" onclick="submitData('phpcontroller.php','mainDiv','to-manage-book-categories-form','personalform.txt')" >Manage Books Categories</a>
</form>
.
.
//other tasks related to managing books
.
.
我必须在此代码中进行哪些更改,以便当我刷新它时,它应该显示当前打开的页面/内容,而不是主页。在 Ajax 中有简单的方法吗?请帮忙!
【问题讨论】:
-
哇,我强烈建议您研究 jQuery 或 Mootools 之类的 javascript 框架,而不是自己编写所有 XmlHttpRequestObject 代码。仅在那个区域就可以节省大量时间!
-
@davidethell 你是对的。但我不会向初学者推荐它。在使用现成的框架之前,新的编码人员应该首先掌握自己的所有技术。
标签: php javascript ajax