gpt4 book ai didi

php - Ajax 数据库浏览器页面 Refresh 改变页面而不是刷新它

转载 作者:行者123 更新时间:2023-11-30 06:01:18 25 4
gpt4 key购买 nike

我的 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>

Database Homepage/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 Controller 执行此代码:

/*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 中有一种简单的方法吗?请帮忙!

最佳答案

您询问了一些最佳实践?他们在那里:

  • 不要使用 onclick HTML 属性。相反,使用 addEventListener()或者一些跨浏览器的差异(这就是 jQuery 派上用场的地方)。这就是为什么最好不要使用 onclick html 属性的原因:http://en.wikipedia.org/wiki/Unobtrusive_JavaScript
  • 正确缩进代码。现在几乎无法阅读
  • 将您的 XMLHttpRequest 对象存储到一个变量中。这么长的变量名很难阅读。看this tutorial看看代码有多干净。

关于您的解决方案,正如 Nick 所说,我会使用 cookie :)。当您在 javascript 中处理请求的答案时,添加一个 cookie。在服务器端,检查 cookie 是否存在,并据此采取行动。

Kamal 的解决方案对我来说似乎有点矫枉过正。此外,并非所有浏览器都支持他的解决方案。

关于php - Ajax 数据库浏览器页面 Refresh 改变页面而不是刷新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com