如何在不刷新网页的情况下运行php文件?

我有个问题。如果有人提供帮助,我将感到非常荣幸。

首先,让我解释一下我想要的工作流程。我的 CMS 是 Wordpress。我有一个网页(views.php)。在此页面中,我想仅向具有订阅者角色的用户显示一个下载按钮(id =“download-button”)。默认情况下,没有人具有订阅者角色。因此,该按钮默认是隐藏的。当用户购买特定产品时,他获得角色订阅者。现在,假设用户已在浏览器中将views.php 页面作为选项卡打开。在此步骤中,该按钮被隐藏。之后,他打开另一个选项卡并购买该特定产品,并获得角色订阅者。现在,如果他刷新 view.php 页面,就会看到下载按钮。但是,我希望用户在不刷新页面的情况下看到下载按钮。对此,我编写了button.php文件,以便在ajax中调用。然而,它不起作用。

我的代码:html代码(写在view.php中,这是下载按钮的地方):


<div id="div1"></div>

我的 javascript 代码(放在 view.php 文件中):


<script>

$(document).ready(function(){

  $("button").click(function(){

    $("#div1").load("button.php");

  });

});

</script>

我的button.php代码:


<?php

if (check_user_role(array('subscriber'))) {

echo ('<button id="download-button">Download</button>');                        

}               

?>


我应该注意到我已经在views.php中编写了check_user_role php函数。如果你能帮忙,那将是我的荣幸。


GCT1015
浏览 146回答 4
4回答

繁华开满天机

您可以将事件侦听器函数订阅到 window.onfocus 事件。尝试以下操作:document.addEventListener("DOMContentLoaded", function (event) {    window.onfocus = function () {        $("#div1").load("button.php");     }});我强烈建议您进一步阅读 javascript 事件。对于纯 JavaScript: https://www.w3schools.com/js/js_events.asp对于 jQuery: https://api.jquery.com/category/events/

RISEBY

$(document).ready 事件仅在 DOM 加载后运行一次。因此,除非重新加载页面,否则该事件不会触发。如果用户在另一个浏览器选项卡中购买订阅,然后返回到原始选项卡,则会触发 windows.onfocus 事件。因此,您可以使用 window.onfocus 事件在每次 view.php 选项卡变为活动状态时检查订阅,然后在必要时显示按钮。所以你可以在 view.php 中使用类似下面的内容$(document).ready(function(){&nbsp; window.onfocus = function () {&nbsp; &nbsp; &nbsp; &nbsp; $("#div1").load("button.php");&nbsp;&nbsp; }});

回首忆惘然

嘿,你必须使用 Window setInterval() 方法,该方法的作用是它会按照你设置的时间间隔在后台触发。您可以调用 ajax 代码来设置/显示您的按钮&nbsp;setInterval(function(){&nbsp; &nbsp;&nbsp;&nbsp;$("#div1").load("button.php");&nbsp; &nbsp;},&nbsp;3000);确保添加此按钮后将 return false ,这样它就不会一次又一次地执行,不会增加网页上的负载。

幕布斯6054654

将 iframe 添加到 view.php 中,不需要包含任何内容也不需要可见。<iframe name="download" id="if_download" src="blank.html"></iframe>将下载操作定位到 iframe。加上一些JS:function download(href) {&nbsp; window.frames['download'].location = 'download.php?file=' + href;&nbsp; return false;}您可能需要通过 php 文件包装下载操作以修改其标头下载.php:$file_name = $_GET['file'];//validate file exists and *remove any ../ - simple:if (strpos($file_name, '/') !== false) die('yeah right..');header("Content-Disposition: attachment;filename=\"$file_name\"");echo file_get_contents($file_name);die();
打开App,查看更多内容
随时随地看视频慕课网APP