2009-07-09 44 views
2

調用JavaScript上的一個按鈕的點擊此Javascript被稱爲:無法從PHP

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標籤的mainbodyresponse

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

我無法調用JavaScript從我的PHP。 如果有人知道我做錯了什麼,或有一個想法我應該做什麼,這將是非常有益的。

+0

清理,如果你希望任何人都認真對待這個你的問題。另外,使用ALL CAPS很煩人。 – 2009-07-09 18:19:20

+0

問題是? – 2009-07-09 18:29:01

回答

3

我不認爲改變一個對象的innerHTML並插入一個腳本會導致它觸發。我當然不想依賴那種行爲。

爲什麼不直接在responseText上進行某種字符串比較(例如在case語句中),然後調用相應的函數?

編輯:你也可以刪除腳本標籤,並在responseText上調用eval,但eval不是世界上最好的功能。

0

我已經成功地通過傳遞腳本標籤字符串中

例做到了這一點:

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

    return $jsStringOut; 
} 

echo outputResults("Hello Stackers"); 
?>