JavaScript — Ajax, изменить переменную после загрузки

у меня есть этот код:

<?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 и т. Д. Я действительно ценю любую помощь, которую вы можете предоставить.

2

Решение

попробуй это. Я изменил твой код

          <?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 ;
?>
0

Другие решения

<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 для дальнейших приращений.

Надеюсь это поможет.

0

Если вы хотите использовать только 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"];
?>
0
По вопросам рекламы [email protected]