为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
GCT1015 2023-07-15 17:35:49
我有个问题。如果有人提供帮助,我将感到非常荣幸。首先,让我解释一下我想要的工作流程。我的 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代码:<?phpif (check_user_role(array('subscriber'))) {echo ('<button id="download-button">Download</button>');                        }               ?>我应该注意到我已经在views.php中编写了check_user_role php函数。如果你能帮忙,那将是我的荣幸。
查看完整描述

4 回答

?
繁华开满天机

TA贡献1816条经验 获得超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/


查看完整回答
反对 回复 2023-07-15
?
RISEBY

TA贡献1856条经验 获得超5个赞

$(document).ready 事件仅在 DOM 加载后运行一次。因此,除非重新加载页面,否则该事件不会触发。


如果用户在另一个浏览器选项卡中购买订阅,然后返回到原始选项卡,则会触发 windows.onfocus 事件。


因此,您可以使用 window.onfocus 事件在每次 view.php 选项卡变为活动状态时检查订阅,然后在必要时显示按钮。所以你可以在 view.php 中使用类似下面的内容


$(document).ready(function(){

  window.onfocus = function () {

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

  }

});


查看完整回答
反对 回复 2023-07-15
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

嘿,你必须使用 Window setInterval() 方法,该方法的作用是它会按照你设置的时间间隔在后台触发。

您可以调用 ajax 代码来设置/显示您的按钮

 setInterval(function(){ 
   $("#div1").load("button.php"); 
 }, 3000);

确保添加此按钮后将 return false ,这样它就不会一次又一次地执行,不会增加网页上的负载。


查看完整回答
反对 回复 2023-07-15
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

将 iframe 添加到 view.php 中,不需要包含任何内容也不需要可见。


<iframe name="download" id="if_download" src="blank.html"></iframe>

将下载操作定位到 iframe。加上一些JS:


function download(href) {

  window.frames['download'].location = 'download.php?file=' + href;

  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();


查看完整回答
反对 回复 2023-07-15
  • 4 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信