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

WBOY
Release: 2016-06-23 14:26:11
Original
842 people have browsed it

各位大牛,消息想问个关于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>
Copy after login

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;}
Copy after login

处理页面代码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;?>
Copy after login

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


回复讨论(解决方案)

通过 eval 和 create_function 都可实现

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


$hint='for($i=0;$i<2;$i++){.....}';

eval("\$hint = \"$hint\";");

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

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

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

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

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

如果程序写作
for($i=0;$i<2;$i++){

123
}
您认为是正确的吗?

如果程序写作
for($i=0;$i<2;$i++){

123
}
您认为是正确的吗? 额。因为是希望可以循环传递多个层出去,额额。自己想想也不应该是这么写。抱歉

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

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

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

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

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!