我设法让我以前的项目在我点击网页上的按钮的地方工作,并通过点击按钮点击运行PHP代码告诉所有设备运行JavaScript函数,该函数读取PHP代码正在更改的文本文件的值。
现在我想做同样的事情,但是我希望 3 不同的按钮在浏览网页的所有设备上运行 3 不同的JavaScript功能。< / p>
我尝试过制作3个不同的PHP文件,3个不同的文本文件和3个不同的功能,但它不起作用(似乎我认为我没有点击按钮),而且看起来像这不是一个非常有效的方法。对于所有不同的函数,我认为这是为了同时运行多个$ .get()函数。
我如何拥有1个PHP文件和1个$ .get()函数并使其工作?
谢谢, Fjpackard。
编辑: 这是我尝试过的代码,虽然如果可能的话,如果可以的话,我可以采用不同的更有效的方式。
的index.html:
<title>PHP Test</title>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script>
var theButton;
function myClick()
{
$.post('script.php', {});
}
function myClick2()
{
$.post('script2.php', {});
}
function myClick3()
{
$.post('script3.php', {});
}
function myFunc() {
//The code you want to run on the clients
$("#theDiv").text("Say Hello");
setTimeout(function(){
$("#theDiv").text("");
},2000);
}
function myFunc2() {
//The code you want to run on the clients
$("#theDiv").text("Say Goodbye");
setTimeout(function(){
$("#theDiv").text("");
},2000);
}
function myFunc3() {
//The code you want to run on the clients
$("#theDiv").text("Zip Your Mouth");
setTimeout(function(){
$("#theDiv").text("");
},2000);
}
var lastValue = '';
var lastValue2 = '';
var lastValue3 = '';
$("document").ready(function() {
var deviceAgent = navigator.userAgent.toLowerCase();
var agentID = deviceAgent.match(/(iphone|ipod|ipad)/);
if (agentID) {
// mobile code here
$("#btn1").remove();
$("#btn2").remove();
$("#btn3").remove();
setInterval(function() {
$.get(
'script.php',
{},
function (data) {
if (data != lastValue) {
myFunc();
lastValue = data;
}
}
);
/*$.get(
'script2.php',
{},
function (data2) {
if (data2 != lastValue2) {
myFunc2();
lastValue = data2;
}
}
);
$.get(
'script3.php',
{},
function (data3) {
if (data3 != lastValue3) {
myFunc3();
lastValue = data3;
}
}
);*/
},100);
}
else {
$("#theDiv").remove();
}
});
</script>
<div id="theDiv"></div>
<button id="btn1" class="btn" onclick="myClick()">Say Hello</button><br>
<button id="btn2" class="btn" onclick="myClick2()">Say Goodbye</button><br>
<button id="btn3" class="btn" onclick="myClick3()">Zip Your Mouth</button>
的script.php:
<?php
// Disable cache
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
header('Cache-Control: max-age=0, no-cache, no-store, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header("Pragma: no-cache");
$file = 'file.txt';
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
// POST request
$previous = file_get_contents($file);
if ($previous === 'true')
{
file_put_contents($file, 'false');
}
else
{
file_put_contents($file, 'true');
}
}
else
{
// not POST request, we assume it's GET
echo file_get_contents($file);
}
exit();
?>
script2.php:
<?php
// Disable cache
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
header('Cache-Control: max-age=0, no-cache, no-store, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header("Pragma: no-cache");
$file = 'file2.txt';
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
// POST request
$previous = file_get_contents($file);
if ($previous === 'true')
{
file_put_contents($file, 'false');
}
else
{
file_put_contents($file, 'true');
}
}
else
{
// not POST request, we assume it's GET
echo file_get_contents($file);
}
exit();
?>
script3.php:
<?php
// Disable cache
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
header('Cache-Control: max-age=0, no-cache, no-store, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header("Pragma: no-cache");
$file = 'file3.txt';
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
// POST request
$previous = file_get_contents($file);
if ($previous === 'true')
{
file_put_contents($file, 'false');
}
else
{
file_put_contents($file, 'true');
}
}
else
{
// not POST request, we assume it's GET
echo file_get_contents($file);
}
exit();
?>
答案 0 :(得分:1)
您可以在php文件中使用一些GET
参数和array
:
JS代码:
function myClick()
{
$.post('script.php?button=1', {});
}
function myClick2()
{
$.post('script.php?button=2', {});
}
function myClick3()
{
$.post('script.php?button=3', {});
}
然后在script.php
:
<?php
session_start();
// Disable cache
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
header('Cache-Control: max-age=0, no-cache, no-store, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header("Pragma: no-cache");
$fileArray = array("1" => "file.txt", "2" => 'file2.txt', "3" => 'file3.txt');
if(isset($_SESSION['lastFile']) && !isset($_GET['button'])){
$file = $_SESSION['lastFile'];
}else if(isset($_GET['button'])){
$file = $fileArray[$_GET['button']];
}else{
$file = "file.txt";
}
$_SESSION['lastFile'] = $file;
这样,如果没有设置GET
参数,脚本将回退到先前使用的文件(在会话中设置),或者加载默认值(file.txt)
因此,如果您向script.php?button=2
发出Ajax请求,则会加载文件file2.txt
,并将其插入session variable
。
稍后当您请求script.php
(没有按钮部分)时,脚本会检测到没有button get variable
。但它知道会话中有一个变量与之前使用过的文件,因此脚本将加载以前使用过的文件。