Невозможно вызвать JavaScript из PHP - PullRequest
2 голосов
/ 09 июля 2009

При нажатии кнопки этот 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 тега с идентификаторами mainbody и response:

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

Я не могу вызвать javascript с моего php. Если кто-то знает, что я делаю неправильно, или знает, что мне делать, это будет очень полезно.

Ответы [ 2 ]

3 голосов
/ 09 июля 2009

Я не думаю, что изменение innerHTML объекта и вставка скрипта приведут к его срабатыванию. Я, конечно, не хотел бы зависеть от такого поведения.

Почему бы просто не выполнить какое-либо сравнение строк в responseText (например, в операторе case), а затем вызвать соответствующую функцию?

РЕДАКТИРОВАТЬ: Вы также можете удалить теги сценария и вызвать eval для responseText, но eval не самая хорошая функция в мире.

0 голосов
/ 21 марта 2014

Я успешно сделал это, передав теги script в строке

Пример:

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

   return $jsStringOut;
}

echo outputResults("Hello Stackers");
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...