如题。我在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;'>&nbsp;
</div>
</div>


"
;注意:这里的<script>alert()</script>这样写进$content是显示不出来的,有什么方法么?各位老大

解决方案 »

  1.   

    输出的时候是否报js错误了?或许把这段转为json试试
      

  2.   

    用 innerHTML 写入的js代码是不会被执行的
    解决的方法很多,但都超出了php的范围,请到 javascrpit 和 ajax 版面求解
      

  3.   

    $.post("result.php", { "p":p },function(data){
           str = data;
           document.getElementById("resText1").innerHTML = str;
           alert("good");  //移动到这里执行
            });
      

  4.   

    虽说#3的有点牵强,但他说出了真谛,ajax中js与html是不能混编的
      

  5.   

    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; 
      

  6.   

    楼上有误,更正
    <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>
      

  7.   

    建议采用另一种思路:ajax返回的数据分为两部分,在回调函数中将两部分分开。其中第一部分,是普通的html内容,按照之前的方式来处理。第二部分,是需要额外用特殊脚本处理的数据,也就是楼主之前试图混编到html中的那些脚本要处理的数据。这些脚本以静态的方式直接写在页面中,作为回调函数的一部分来,第二部分只有数据内容部分才作为ajax的返回数据。整体来说的话,建议把两部分数据打包成json来处理吧。
      

  8.   

    一定要把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);