php处理完的数据打包传给html,怎么传script过去?

chamonhuang 2011-06-30 04:19:02
如题。我在html页面用了js,给php传值,php经过数据库查询操作之后把结果排好样式,打包成$content这样写进传回给html的<div>显示。但是每当在$content加入js语句就不能显示结果。。。。。可是我需要在这里$html里面js怎么办啊。。。


部分源码:
html:
$.post("result.php", { "p":p },function(data){
str = data;
document.getElementById("resText1").innerHTML = str;
});

php:
while($row = mysql_fetch_array($res)){
$content .= "

<div class='t_area_out item' style='border-width:2px;'>
<div class='t_area_in'>
<table class='at_jrat'>
<tbody>
<tr>
<td>
<div class='at_jrat_title'>
<a href='?view=".$row['id']."'>".$row['name']."</a>
</div>
</td>
</tr>
</tbody>
</table>

<div class='t_deal_r'>
<div class='t_deal_r_img'>
<a href='?view=".$row['id']."'><img src='".$row['url']."'/></a>
</div>
</div>

<div style='position: relative;' class='t_deal'>
<div class='t_deal_l'>

<div class='at_buy'>
<div class='price'>¥".$row['nowprice']. "</div>
<div class='deal_b'>
<a href='?view=".$row['id']."' style='width:100px; height:100px; display: block;'></a>
</div>
</div>
<div class='at_shuzi'>
<ul>
<li><span>原价</span><b class='prime_cost '>¥".$row['price']."</b></li>
<li><span>折扣</span><b>".$row['price']."折</b></li>
<li><span>节省</span><b>¥".($row['price']-$row['nowprice'])."</b></li>
</ul>
</div>

</div>

<div class='mb_0624'>
<div class='deal_djs' id='remainTime_".$row['id']."'>
<script>alert('good');</script>
</div>

</div>
<div id='tuanState' class='mb_0626'><b>".$row['nowprice']."</b>人已购买</div>
</div>
</div>
<div style='clear: both; height: 0px;'> 
</div>
</div>


"
;


注意:这里的<script>alert()</script>这样写进$content是显示不出来的,有什么方法么?各位老大
...全文
345 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ma2jiajia 2011-07-01
  • 打赏
  • 举报
回复
一定要把JS脚本嵌套到HTML里??
你可以在后台把HTML和JS分开
$content = array(
"html" => "xxxx",
"js" => "sdfkjskdf"
);
echo json_encode($content);
exit();

然后ajax里
var response = eval("{"+xmlHttpRequest.responseText+"}");
xxx.innerHTML = response.html;
eval(response.js);
CaiKanXP 2011-06-30
  • 打赏
  • 举报
回复
建议采用另一种思路:

ajax返回的数据分为两部分,在回调函数中将两部分分开。

其中第一部分,是普通的html内容,按照之前的方式来处理。

第二部分,是需要额外用特殊脚本处理的数据,也就是楼主之前试图混编到html中的那些脚本要处理的数据。这些脚本以静态的方式直接写在页面中,作为回调函数的一部分来,第二部分只有数据内容部分才作为ajax的返回数据。

整体来说的话,建议把两部分数据打包成json来处理吧。
Go 旅城通票 2011-06-30
  • 打赏
  • 举报
回复
楼上有误,更正
<div id="dv"></div>
<script>
window.onload=function(){
var dv=document.getElementById('dv');
var s='a23<script>alert(123)</'+'script>afafe<script>alert(456)</'+'script>';
if(window.navigator.userAgent.indexOf("Firefox")>=1) { //针对FF
dv.innerHTML=s;
var scripts = dv.getElementsByTagName("script");
for(var i=0;i<scripts.length;i++){ //一段一段执行script
eval(scripts[i].innerHTML);
}
}else if(window.navigator.userAgent.indexOf("MSIE")!=-1) {
s=s.replace(/<script/gi,"<script defer ")//因为 <script defer>可以在IE上直接运行,所以把所有的script标签都替换成

defer标记的script
dv.innerHTML=s;
}
}
</script>
Go 旅城通票 2011-06-30
  • 打赏
  • 举报
回复
if(window.navigator.userAgent.indexOf("Firefox")>=1) //针对FF 
{
document.getElementById("oDiv").innerHTML = xmlhttp.responseText;
var scripts = document.getElementById("oDiv").getElementsByTagName("script");
for(var i=0;i //一段一段执行script
{
eval(scripts[i].innerHTML);
}
}else if(window.navigator.userAgent.indexOf("MSIE")!=-1)
{
var httpText = xmlhttp.responseText;
httpText = httpText.replace(/ ]*>/gi," <script defer>")//因为 <script defer>可以在IE上直接运行,所以把所有的script标签都替换成defer标记的script
document.getElementById("oDiv").innerHTML = httpText;
}
xuzuning 2011-06-30
  • 打赏
  • 举报
回复
虽说#3的有点牵强,但他说出了真谛,ajax中js与html是不能混编的
chamonhuang 2011-06-30
  • 打赏
  • 举报
回复
楼上的似乎没有明白我想干什么。。。。
xs8577 2011-06-30
  • 打赏
  • 举报
回复
$.post("result.php", { "p":p },function(data){
str = data;
document.getElementById("resText1").innerHTML = str;
alert("good"); //移动到这里执行
});
xuzuning 2011-06-30
  • 打赏
  • 举报
回复
用 innerHTML 写入的js代码是不会被执行的
解决的方法很多,但都超出了php的范围,请到 javascrpit 和 ajax 版面求解
hzhsky1985 2011-06-30
  • 打赏
  • 举报
回复
输出的时候是否报js错误了?或许把这段转为json试试

87,924

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧