Php $.get在通过javascript访问html页面时未执行jquery
我一直在尝试为我的站点创建一个简单的下载计数器,方法如下:使用jquery检索指示下载时间的txt值,然后使用jquery调用ajax来执行一个PHP文件,这将反过来覆盖该txt文件(在PHP文件上递增),然后存储它,然后用jquery读回该值。在我忘记之前,为了避免任何错误信息,以下是该页面的全部HTML代码:Php $.get在通过javascript访问html页面时未执行jquery,php,jquery,ajax,get,overwrite,Php,Jquery,Ajax,Get,Overwrite,我一直在尝试为我的站点创建一个简单的下载计数器,方法如下:使用jquery检索指示下载时间的txt值,然后使用jquery调用ajax来执行一个PHP文件,这将反过来覆盖该txt文件(在PHP文件上递增),然后存储它,然后用jquery读回该值。在我忘记之前,为了避免任何错误信息,以下是该页面的全部HTML代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>GreenDream: SMS Sender</title>
<link rel=StyleSheet type="text/css" href="http://www.gfcf14greendream.com/CSS/greendream.css" />
<link rel="SHORTCUT ICON" href="http://www.gfcf14greendream.com/images/dreamicon.ico">
<script type="text/javascript" src="http://www.gfcf14greendream.com/JS/greendream.js"></script>
</head>
<body onload="startTime(); handleTextFile()">
<div id="background">
<img src="http://www.gfcf14greendream.com/images/greentwi.png" class="stretch" alt="" />
</div>
<br />
<table align="center">
<tr>
<td>
<a href="http://www.gfcf14greendream.com/"><img src="http://www.gfcf14greendream.com/images/dream.png" align="middle"></a>
</td>
<td>
<div id='pbutton' style="width:113px; height:41px; margin:0px;white-space:nowrap; word-spacing:0;"><a class="button" href="http://www.gfcf14greendream.com/programs.html">Programs</a></div>
</td>
<td>
<div id='gbutton' style="width:93px; height: 41px; margin:0px;white-space:nowrap; word-spacing:0;"><a class="button" href="http://www.gfcf14greendream.com/games.html">Games</a></div>
</td>
<td>
<div id='tbutton' style="width:108px; height: 41px; margin:0px;white-space:nowrap; word-spacing:0;"><a class="button" href="http://www.gfcf14greendream.com/tutorials.html">Tutorials</a></div>
</td>
<td>
<div id='bbutton' style="width:74px; height: 41px; margin:0px;white-space:nowrap; word-spacing:0;"><a class="button" href="http://blog.gfcf14greendream.com/">Blog</a></div>
</td>
<td>
<div id='mbutton' style="width:114px; height: 41px; margin:0px;white-space:nowrap; word-spacing:0;"><a class="button" href="http://www.gfcf14greendream.com/aboutme.html">About Me</a></div>
</td>
<td style="padding-left:50px">
<div id='daytitle'></div>
<div id='clock'></div>
</td>
</tr>
</table>
<br />
<div style="text-align: center; color:#00FF00; font-size: 20px">The following is a Visual C++ program that was designed specifically to send text messages to a phone... Free of charge!!</div>
<br />
<div style="text-align: center; color:#FFFF00; font-size: 20px">THE GOOD: If you have a prepaid phone, then you can send text messages to a phone without wasting your minutes...</div>
<br />
<div style="text-align: center; color:#FF8000; font-size: 20px">THE BAD : Since I haven't been able to put a Skype or Google Voice library for use with C++, this application depends on using what's known as an SMS gateway, different for every phone carrier... meaning you must know your recipient's carrier to be able to send a message!</div>
<br />
<div style="text-align: center; color:#FF0000; font-size: 20px">THE UGLY: This program doesn't work on computers connected to safe networks (such as college/university networks) ... at least not yet!</div>
<br />
<div style="text-align: center; color:#00FF00; font-size: 20px">You will probably need the Visual C++ Redistributable Package (or the .NET framework or both, but most likely just the package) to run this program, if you don't have it installed on your pc yet</div>
<br />
<br />
<div style="text-align: center; color:#0000C8; font-size: 20px">Click <a href="http://www.microsoft.com/en-us/download/details.aspx?id=5555">here</a> to download the Visual C++ Redistributable Package</div>
<div style="text-align: center; color:#0000C8; font-size: 20px">Click <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17851">here</a> to download the .NET Framework 4</div>
<br />
<br />
<div style="text-align: center; color:#00FF00; font-size: 20px"><a class="button" id="downbutton" style="width:115px;margin:0px;white-space:nowrap; word-spacing:0;" href="http://www.gfcf14greendream.com/Programs/SMSSender/SMS Sender.exe">Click here to download SMS Sender</a></div>
<br />
<div id='counter' style="text-align: center;"></div>
<br />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
function handleTextFile()
{
document.getElementById('counter').style.color = "rgb(0, 255, 0)";
document.getElementById('counter').style.fontWeight = 'bold';
var downcounter = 0;
$.get("http://www.gfcf14greendream.com/counters/smssender.txt", function(data){
downcounter = data;
if (downcounter == 1) $("#counter").text("SMS Sender has been downloaded " + downcounter + " time...");
else $("#counter").text("SMS Sender has been downloaded " + downcounter + " times...");
});
$("#downbutton").click( function(){
$.get("http://www.gfcf14greendream.com/PHP/smssender.php", function(data){
$.get("http://www.gfcf14greendream.com/counters/smssender.txt", function(data){
downcounter = data;
if (downcounter == 1) $("#counter").text("SMS Sender has been downloaded " + downcounter + " time...");
else $("#counter").text("SMS Sender has been downloaded " + downcounter + " times...");
});
});
});
}
</script>
</body>
</html>
然后,单击downbutton变量时,应执行以下代码:
$("#downbutton").click( function(){
$.get("http://www.gfcf14greendream.com/PHP/smssender.php", function(data){
$.get("http://www.gfcf14greendream.com/counters/smssender.txt", function(data){
downcounter = data;
if (downcounter == 1) $("#counter").text("SMS Sender has been downloaded " + downcounter + " time...");
else $("#counter").text("SMS Sender has been downloaded " + downcounter + " times...");
});
});
});
,它应该读取一个php文件,其代码为:
<?php
$counter = intval(file_get_contents('/homepages/37/d434704165/htdocs/counters/smssender.txt'));
$counter++;
file_put_contents('/homepages/37/d434704165/htdocs/counters/smssender.txt', $counter);
?>
非常感谢您的帮助或建议 我认为单独使用PHP页面会简单得多。您可以使用GET变量来确定是否需要增加下载计数器。例如,在PHP文件中执行以下操作:
<?php
$total = (int)file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt');
if (isset($_GET['i'])) {
$total++;
// now update the file for future use
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt', $total);
}
echo $total;
?>
PHP文件:
<?php
$total = (int)file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt');
if (isset($_GET['i'])) {
$total++;
// now update the file for future use
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt', $total);
}
$suffix = ($total == 1) ? 'time' : 'times';
echo 'SMS Sender has been downloaded ' . $total . ' ' . $suffix . '...';
?>
现在,您可以大大简化Javascript/jQuery。此代码将具有与您的代码完全相同的行为,没有任何错误。现在,我将解释我所做的更改。首先,您只需要使用$.get()方法调用一个PHP文件,而不管您是检索当前的下载次数还是增加总下载次数
其次,文本处理在PHP文件中完成。您不再确定它是否在Javascript中被下载了1次或更多次,而是由PHP文件处理,因为它比检索数据并随后进行计算要快得多
最后,我让下载按钮只调用一次$.get(),这样您就不必担心由于同时检索两个不同页面而导致的错误。尝试用我上面发布的新代码替换您的代码,并让我知道它是如何为您工作的。我认为只使用PHP页面本身会简单得多。您可以使用GET变量来确定是否需要增加下载计数器。例如,在PHP文件中执行以下操作:
<?php
$total = (int)file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt');
if (isset($_GET['i'])) {
$total++;
// now update the file for future use
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt', $total);
}
echo $total;
?>
PHP文件:
<?php
$total = (int)file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt');
if (isset($_GET['i'])) {
$total++;
// now update the file for future use
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt', $total);
}
$suffix = ($total == 1) ? 'time' : 'times';
echo 'SMS Sender has been downloaded ' . $total . ' ' . $suffix . '...';
?>
现在,您可以大大简化Javascript/jQuery。此代码将具有与您的代码完全相同的行为,没有任何错误。现在,我将解释我所做的更改。首先,您只需要使用$.get()方法调用一个PHP文件,而不管您是检索当前的下载次数还是增加总下载次数
其次,文本处理在PHP文件中完成。您不再确定它是否在Javascript中被下载了1次或更多次,而是由PHP文件处理,因为它比检索数据并随后进行计算要快得多
最后,我让下载按钮只调用一次$.get(),这样您就不必担心由于同时检索两个不同页面而导致的错误。尝试用我上面发布的新代码替换您的代码,并让我知道它是如何为您工作的。我不确定我是否理解(抱歉,这是我第一次尝试使用php编写文件)。您的意思是尝试将我所有的$.get()组合成使用类似于
$.ajax()
的东西来调用php页面吗?我更新了代码。请使用我在“更新”后发布的代码。谢谢您的代码。我不想成为一个麻烦,但尽管第一个$.get可以工作,第二个(php有?I)却不能。我写了一个警报(“下载”)
在$.get(…php?i”)
行之前,它从未出现过,因此错误仍然在$get以覆盖:$.get(“/php/smssender.php?i”,函数(数据){
但是我手动转到php或php时没有收到错误?我检查过Javascript控制台,看它是否返回任何错误吗?尝试将smssender.php?I更改为smssender.php?I=1,看看这是否修复了故障,因为我不确定jQuery是否允许加载带有未定义变量的URL,即使显式值不正确'在页面中不需要。另外,请尝试重新复制和粘贴代码,以确保没有丢失语法,例如}。我注意到,在internet explorer和android浏览器中,文件写入只工作一次。但在firefox或chrome上不工作。但在检查控制台时,我确实注意到一些CSS错误。这会以某种方式停止覆盖吗?如果你想查看页面,我不确定我是否理解(很抱歉,此文件写入是我第一次尝试使用php)。你的意思是尝试将我所有的$.get()合并到使用类似$.ajax()
的东西来调用php页面吗?我更新了我的代码。请使用我在“更新”之后发布的代码。谢谢你的代码。我不想麻烦你,但是,虽然第一个$.get可以工作,但是第二个(php有?我的)不能。我写了一个警报(“下载”)“
在$.get(…php?i”)
行之前,它从未出现过,因此错误仍然在$get to overwrite:$.get(“/php/smssender.php?i”,函数(数据)处{
但是我手动转到php或php时没有收到错误?我检查过Javascript控制台,看它是否返回任何错误吗?尝试将smssender.php?I更改为smssender.php?I=1,看看这是否修复了故障,因为我不确定jQuery是否允许加载带有未定义变量的URL,即使显式值不正确'在页面中不需要。另外,请尝试重新复制和粘贴代码,以确保没有丢失语法,例如}。我注意到,在internet explorer和android浏览器中,文件写入只工作一次。但在firefox或chrome上不工作。但在检查控制台时,我确实注意到一些CSS错误。这会以某种方式停止覆盖吗?如果你想查看页面,它是
<?php
$total = (int)file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt');
if (isset($_GET['i'])) {
$total++;
// now update the file for future use
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/counters/smssender.txt', $total);
}
$suffix = ($total == 1) ? 'time' : 'times';
echo 'SMS Sender has been downloaded ' . $total . ' ' . $suffix . '...';
?>