2009-07-09 8 views
2

Auf dem Klick auf eine Schaltfläche javascript von PHP nennen dies Javascript aufgerufen wird:kann nicht

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!"; 
} 

Und dann das PHP-Skript aufgerufen wird:

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

Die HTML hat zwei DIV Tags mit IDs von mainbody und response:

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

ich bin nicht in der Lage, die Javascript aufrufen von meinem php. Wenn jemand weiß, was ich falsch mache oder eine Idee hat, was ich tun soll, wird es sehr hilfreich sein.

+0

Abgleich Ihre Frage, wenn Sie jemand erwar dies ernst zu nehmen. Außerdem ist die Verwendung von ALL CAPS nervig. –

+0

Und die Frage ist? –

+0

Vielen Dank für Ihre Frage. -1 entfernt. –

Antwort

3

Ich glaube nicht, dass das Ändern der innerHTML eines Objekts und das Einfügen eines Skripts dazu führen, dass es ausgelöst wird. Ich würde sicherlich nicht auf dieses Verhalten verlassen wollen.

Warum nicht einfach eine Art von String-Vergleich auf dem responseText, (zum Beispiel in einer case-Anweisung) und dann die entsprechende Funktion aufrufen?

EDIT: Sie könnten auch die Skript-Tags entfernen, und rufen Sie Eval auf die Antwort Text, aber Eval ist nicht die schönste Funktion der Welt.

+0

Nun, ich dachte an das Gleiche, aber es wird kein sehr guter Weg nach meiner Code-Anforderung sein. es wäre meine letzte Option –

+0

Ich stimme zu, das Skript wird nicht auf ein dynamisches Update ausgelöst. Irgendwie können Sie Ihre ziemlich seltsame Code-Anforderung ändern? –

+0

was ich tue, ist, ein Register Formular erstellen, wenn es Fehler gibt, zeige ich es in der Antwort div-Tag, und wenn es keine Fehler gibt, möchte ich das Ergebnis in mainbody div-Tag anzeigen. denkst du, es gibt eine andere Art und Weise sollte ich es tun? –

0

Ich habe dies erfolgreich getan durch

Beispiel innerhalb der Zeichenfolge, die Script-Tags übergeben:

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

    return $jsStringOut; 
} 

echo outputResults("Hello Stackers"); 
?>