为什么ajax调用在类似情况下表现奇怪?

时间:2014-09-10 17:25:41

标签: php ajax include behavior

我在login.php中使用ajax调用两次并使用两个不同的参数调用ajax.php:

的login.php

$(function()
 { $("#slctSys").focusin(function() 
                  { $.get("ajax.php"
                          ,{sysuser:$("#sysUser").val(), sysupw:$("#sysPswd").val()}
                          ,function(data1) {$("#slctSys").html(data1); }); 
                   })
                 .change(function() 
                   { $.get("ajax.php"
                           ,{sysid:$("#slctSys").val()}
                           ,function(data2) {$("#divURL").text(data2);});
                    });
  });

ajax.php

<?php
include_once('function.php');

if (isset($_GET['sysuser']))
 { $c=sysSelectDB('sysdb');
   $sysinfo=$c->prepare('select sysname from sysinfo
                   where sysuun = "'.$_GET['sysuser'].'"
                     and sysupw = "'.$_GET['sysupw'].'"');

   $sysinfo->execute();
   $ijk='<option value=-1>Select ...</option>';
   if ($sysinfo->rowCount()>0)
    { while ($data = $sysinfo->fetch(PDO::FETCH_ASSOC))
       { $ijk.='<option value='.$data['sysid'].'>'.$data['sysname'].'</option>'; }}
   else { $ijk='<option value=-1>No Access !!!</option>'; }
   $sysinfo->closeCursor();
   $c=null;
   echo $ijk; }

if (isset($_GET['sysid']))
 { $c=sysSelectDB('sysdb');
   $s='select * from sysacss where sysid='.$_GET['sysid'];
   $sysinfo=$c->prepare($s);
   $sysinfo->execute();
   if ($sysinfo->rowCount()==1)
    { $data=$sysinfo->fetch(PDO::FETCH_ASSOC); $retVal=implode("#;#",$data); }
   $sysinfo->closeCursor();
   $c=null;
   echo '$retValsalam'; }

我还在ajax.php中包含了一个function.php,如下所示:

function.php

<!DOCTYPE html>
<meta content="text/html; charset=utf-8" http-equiv=content-type>
<LINK    href="/sysdb/resource/sysStyle.css" rel="stylesheet" />
<script  src ="/sysdb/resource/jquery-2.1.1.min.js"></script>

<script>
function timer()
 { var cT=new Date();
   var cH=cT.getHours();
   var cM=cT.getMinutes();
   var cS=cT.getSeconds();
   return (cH<10?"0":"")+cH+(cM<10?":0":":")+cM+(cS<10?":0":":")+cS; }

...

在第一次ajax调用时,已检索的数据正常。但是在第二个中,function.php会追加到返回值。为什么呢?

1 个答案:

答案 0 :(得分:0)

我找到了基于您的问题@MSTannu的解决方案。你是对的。我只是在include函数之后使用ob_start()和ob_end_clean()。问题解决了。我认为只有第二次调用pre append包含文件到输出,但两个ajax调用具有相同的行为。 TNX。