Вызов PHP-AJAX на той же странице с дублированным файлом php - PullRequest
0 голосов
/ 28 марта 2012

когда я использую вызов ajax, указанный ниже, моя страница просматривается 2 раза. Я думаю, что функция ajax снова вызывает мою страницу, чтобы просмотреть возвращаемый результат.

<?
if(isset($_GET['q'])){
$q=(int)$_GET['q'];
echo $q;
}
?>
<html>
 <head>
 <script type="text/javascript">
 function showUser(str)
 {
 if (str=="")
   {
   document.getElementById("txtHint").innerHTML="";
   return;
   } 
 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("txtHint").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET","java.php?q="+str,true);
 xmlhttp.send();
 }
 </script>
 </head>
 <body>
<form>
 <select name="users" onchange="showUser(this.value)">
 <option value="">Select a person:</option>
 <option value="1">Peter Griffin</option>
 <option value="2">Lois Griffin</option>
 <option value="3">Glenn Quagmire</option>
 <option value="4">Joseph Swanson</option>
 </select>
 </form>
 </br><div id="txtHint"><b>Person info will be listed here.</b></div>

 </body>
</html>

но я хочу использовать только параметр q в моем php смешанном HTML-файле. например, с помощью ajax я улавливаю значение person и помещаю его в параметр q, а затем использую его в запросе sql, например (я воспользуюсь этим запросом для заполнения другого выпадающего списка)

"select * from persons where id=".$q; 

как я могу это сделать, не дублируя страницу?

* я не могу поставить изображения до н.э.

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Полагаю, этот код принадлежит java.php

и да, ваш ajax также вызывает файл java.php с параметром q.

Вы можете сделать две вещи.

  • Либо вы можете изменить вызываемый вами файл и сделать там все необходимое, скажем ajaxresult.php

  • , либо вы можете остановить код, когдаэто называется с ajax

    if(isset($_GET['q'])) {
    
        $q=(int)$_GET['q'];
        echo $q;
        exit;
     }
    
0 голосов
/ 28 марта 2012

Вам нужно иметь все в 1 файле? Я считаю, что он называется java.php - вы вызываете его с помощью ajax, первое условие будет отображаться как q, но ваш HTML-код тоже будет напечатан, потому что больше ничего нет. Добавьте еще или поместите php, вызванный ajax, в другой файл.

Редактировать: вы можете использовать что-то вроде этого

<?php 
if ( 1==1) // or 1!=1
{
?>
text
<?
}
else
{
?>
someothertext
<?
}

РЕДАКТИРОВАТЬ: Протестировано, работает на 100% - в зависимости от условий пишет только text или someothertext, так что это должно работать и у вас, все еще печатает целую страницу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...