无法从PHP调用javascript

时间:2009-07-09 18:14:45

标签: php javascript

点击一个按钮,这个Javascript被称为:

var xmlhttp;
function register()
{   
    xmlhttp=GetXmlHttpObject();
    alert("pass");
    if(xmlhttp==null)
    {
        alert("Your browser does not support AJAX!");
        return;
    }
    var url="register.php";
    url=url+"?id="+uniqueid+"&name="+name+"&passwrd="+passwrd1+"&email="+email;
    xmlhttp.onreadystatechange=statechanged;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null); 
}

function statechanged()
{
    //alert("statechanged function");
    if(xmlhttp.readyState==4)
    {
        //alert(xmlhttp.responseText);
        document.getElementById("response").innerHTML=xmlhttp.responseText;
    }
}

function GetXmlHttpObject()
{
    if(window.XMLHttpRequest)
    {
        return new XMLHttpRequest();
    }
    if(window.ActiveXObject)
    {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}

function testing()
{
    document.getElementById("mainbody").innerHTML="This is my first JavaScript!";
}

然后调用这个PHP脚本:

<?php
    echo "<script type=\"text/javascript\">testing();</script>";
?>

HTML有两个DIV代码,其ID为mainbodyresponse

<HTML>
<HEAD>
<SCRIPT SRC=javascriptname.js></SCRIPT>
</HEAD>
<BODY>
  <DIV ID=mainbody>
     <DIV ID=response>
     </DIV>
  </DIV>
</BODY>
</HTML>

我无法从我的php调用javascript。 如果有人知道我做错了什么或知道我该做什么,那将会非常有帮助。

2 个答案:

答案 0 :(得分:3)

我不认为更改对象的innerHTML并插入脚本会导致它触发。我当然不想依赖这种行为。

为什么不在responseText上进行某种字符串比较,(例如在case语句中),然后调用相应的函数?

编辑:你也可以删除脚本标签,并在responseText上调用eval,但eval不是世界上最好的功能。

答案 1 :(得分:0)

我通过在字符串

中传递脚本标记成功完成了这项工作

示例:

<?php
function outputResults($var1)
{
   $jsStringOut = "
   <script type='text/javascript'>
      document.write('".$var1."');
   </script>
   ";

   return $jsStringOut;
}

echo outputResults("Hello Stackers");
?>