如何解决我对它所在的页面进行了成功的 AJAX 调用,但 php 不会执行
也许标题没有意义... 加载 page.PHP 时,它应该返回内容 A。但是如果用户单击 page.PHP 上的按钮“B”,则会触发 JS 对 page.PHP?param=B 进行 AJAX 调用。 page.PHP 有 PHP 代码,如果它被 ?param=B 请求,它应该加载内容 B。在网络选项卡中,它显示确实向 page.PHP?param=B 发送了一个请求,但代码没有运行。
本质上我想做的是在 page.PHP 上显示基于 url 参数排序的数据。 我希望这是有道理的,哈哈。
page.PHP
<script>
function sort(selection) {
//idk y this doesn't work
let xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","/test.PHP?sortby=" + selection);
xmlhttp.send();
}
</script>
<input type="button" onclick=sort(this.value) value="A"></input>
<?PHP
if (empty($_GET)) {
//query DB for content,don't sort,display
} else if (isset($_GET['sortby'])) {
if ($_GET['sortby'] === 'A') { //query db for content,sort by A and display }
if ($_GET['sortby'] === 'B') { //query db for content,sort by B and display }
?>
最后一点,当我在 url 栏中手动输入 page.PHP?sortby=A 并按回车键时,PHP 运行正常,但是当 AJAX 调用相同的 url 时,PHP 不会运行。
解决方法
Ajax 请求的要点是浏览器不会导航到新页面,而是由 JavaScript 处理响应。
您根本没有处理响应。
您需要等待响应加载,然后对其进行处理。
function loadHandler() {
const data = this.response; // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response
console.log(data);
}
xmlhttp.addEventListener("load",loadHandler);
在上面的例子中,我只是将它记录到控制台。通常你会想要insert it into the HTML document。
通常,您不希望从 Ajax 请求中返回整个 HTML 文档。通常以 JSON 结构返回一些数据并使用它来更新页面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。