Heim  >  Artikel  >  Backend-Entwicklung  >  关于变量与循环语句的问题

关于变量与循环语句的问题

WBOY
WBOYOriginal
2016-06-23 14:26:11805Durchsuche

各位大牛,消息想问个关于AJAX与PHP的问题,现在碰到这样的一个情况
我希望前端页面在点击某标签的时候,在下方可以显示我关于上方点击的标签进行关联的资料,代码如下
index.php

<html><head><script src="clienthint.js"></script> </head><body><form> First Name:<?php            	echo "<a>";                	echo "<i class=\"dapei_partleft\"></i>";                    echo "<span class=\"dapei_partmiddle\" title='teswt' name='test'  onclick=\"showHint(1)\">test</span>";                    echo "<i class=\"dapei_partright\"></i>";               echo " </a>";            	echo "<a>";                	echo "<i class=\"dapei_partleft\"></i>";                    echo "<span class=\"dapei_partmiddle\" title='teswt1' name='test1'  onclick=\"showHint(2)\">test</span>";                    echo "<i class=\"dapei_partright\"></i>";               echo " </a>";?></form><p>Suggestions: <span id="txtHint"></span></p></body></html>

js clienthint代码
var xmlHttpfunction showHint(str){if (str.length==0)  {   document.getElementById("txtHint").innerHTML=""  return  }xmlHttp=GetXmlHttpObject()if (xmlHttp==null)  {  alert ("Browser does not support HTTP Request")  return  } var url="gethint.php"url=url+"?q="+strurl=url+"&sid="+Math.random()xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true)xmlHttp.send(null)} function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {  document.getElementById("txtHint").innerHTML=xmlHttp.responseText  } }function GetXmlHttpObject(){var xmlHttp=null;try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); }catch (e) { // Internet Explorer try  {  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");  } catch (e)  {  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");  } }return xmlHttp;}

处理页面代码gethint.php
<?php $q=$_GET["q"];//$select ="select * from test where cid='$q'";$hint="for($i=0;$i<2;$i++){......}";//Set output to "no suggestion" if no hint were found//or to the correct valuesif ($hint == ""){$response="no suggestion";}else{$response=$hint;}//output the responseecho $response;?>

因为在处理页面$hint 是需要传到前端页面的,所以我希望在处理页面将循环内容都做好之后传递,但是我这样写:$hint="for($i=0;$i 所以拜托大家有没有什么好的办法解决一下
  在线等,谢谢各位了!


回复讨论(解决方案)

通过 eval 和 create_function 都可实现

通过 eval 和 create_function 都可实现 谢谢。能举个例吗?因为我刚用了eval试了下。不行呢,操作如下


$hint='for($i=0;$i
eval("\$hint = \"$hint\";");

$hint='for($i=0;$i<2;$i++){}';eval($hint);echo $i; //2

$hint = 'for($i=0;$i<2;$i++){}';if(2 == eval($hint.' return $i;'))  echo 'ok';

$hint = 'for($i=0;$i<2;$i++){}';if(2 == eval($hint.' return $i;'))  echo 'ok';

额。还是有点不明白,不好意思,麻烦看下如下代码:

$hint = 'for($i=0;$i123}';
if(2 == eval($hint.' return $i;'))
  echo 'ok';
我希望显示两个层 

如果程序写作
for($i=0;$i123}
您认为是正确的吗?

如果程序写作
for($i=0;$i123}
您认为是正确的吗? 额。因为是希望可以循环传递多个层出去,额额。自己想想也不应该是这么写。抱歉

$hint = 'for($i=0;$i<2;$i++){}';if(2 == eval($hint.' return $i;'))  echo 'ok';
额。能指导下吗?

$hint = 'for($i=0;$i<2;$i++){}';if(2 == eval($hint.' return $i;'))  echo 'ok';

已经解决了层循环的问题,但是原本层上有的JS动作,通过eval出来就没有效果了。这是什么原因呀!

可能是:
标记不配套
id 重名
预先绑定的事件无效

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn