у меня есть этот код:
<?php $i=12;
?>
<html>
<head></head>
<body>
<div id="prueba"></div>
<script type="text/javascript">
function loadXMLDoc()
{
var i = "<?php echo $i; ?>";
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
xmlhttp=new XMLHttpRequest();
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById('prueba').innerHTML+=xmlhttp.responseText;
}
}
xmlhttp.open("GET","load.php?i="+i,true);
xmlhttp.send();
}
window.onclick =loadXMLDoc;
</script>
</body>
</html>
И мой файл load.php такой:
<?php
$i = $_REQUEST["i"];
echo $i;
$i=$i+1;
echo "<?php $i=".$i."?>";
?>
Когда я нажимаю на страницу, она загружает load.php и отображает значение $ i. Я добавляю 1 к значению $ i и хочу, чтобы при повторном щелчке значение равно 2 и т. Д., Добавляя 1 к значению $ i. Тем не менее, он всегда выдает 1. Вывод 111111111, и я надеюсь получить 1234567 и т. Д. Я действительно ценю любую помощь, которую вы можете предоставить.
попробуй это. Я изменил твой код
<?php $i=12;
?>
<html>
<head></head>
<body>
<div id="prueba"></div>
<script type="text/javascript">
var i = "<?php echo $i; ?>";
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
xmlhttp=new XMLHttpRequest();
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById('prueba').innerHTML=xmlhttp.responseText;
}
}
i=i+1;
var pruebaInnerHtml=document.getElementById('prueba').innerHTML;
pruebaInnerHtml=pruebaInnerHtml+i;
xmlhttp.open("GET","load.php?ihtml="+pruebaInnerHtml,true);
xmlhttp.send();
}
window.onclick =loadXMLDoc;
</script>
</body>
</html>
И файл load.php это:
<?php
$i = $_REQUEST["ihtml"];
echo $i ;
?>
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var i = document.getElementById("pruebaVal").value;
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("prueba").innerHTML=xmlhttp.responseText;
document.getElementById("pruebaVal").value=xmlhttp.responseText;
}
}
xmlhttp.open("GET","load.php?i="+i,true);
xmlhttp.send();
}
window.onclick =loadXMLDoc;
</script>
</head>
<body >
<input type="hidden" id="pruebaVal" value="1">
<div id="prueba"></div>
</body>
</html>
И ниже это load.php
<?php
$i = $_REQUEST["i"];
$i=$i+1;
echo $i;
?>
Я переместил код ajax в часть Head из части тела. И используя скрытую переменную для инициализации var i
а также хранить ответ Ajax для дальнейших приращений.
Надеюсь это поможет.
Если вы хотите использовать только php для проверки «i», вы можете использовать $ _SESSION:
<?php
session_start();
$_SESSION["i"]=0;
?>
<html>
<head></head>
<body>
<div id="prueba"></div>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("prueba").innerHTML+=xmlhttp.responseText;
}
}
xmlhttp.open("GET","load.php",true);
xmlhttp.send();
}
window.onclick=loadXMLDoc;
</script>
</body>
</html>
И в load.php:
<?php
session_start();
$_SESSION["i"] = $_SESSION["i"]+1;
echo $_SESSION["i"];
?>