2012-03-25 4 views
-2

Hey Ich habe versucht, ein Skript aufzurufen, einige Änderungen an einer HTML-Datei vorgenommen, aber wenn ich das Skript ausführen, sagt mir, dass es einen Aufruf an ein Nicht-Objekt macht. Offensichtlich habe ich etwas falsch gemacht, aber was? Hier ist das Skript.Erhalte einen Nicht-Objektfehler in meinem PHP-Skript

/*Dom controllers*/ 
    $dom = new DOMDocument(); 
    $dom->loadHTML('index.html'); 
    $id = $dom->getElementById('contact_us'); 
    $p = $dom->appendChild(new DOMElement('p')); 
    $op = $dom->getElementsByTagName('p'); 

    /* Dem POST vars used by dat Ajax mah ziggen, yeah boi*/ 
    if (isset($_POST['Home']) && isset($_POST['About']) && isset($_POST['Contact']) && isset($_POST['sexyText'])){ 
    $home = $_POST['Home']; 
    $about = $_POST['About']; 
    $contact = $_POST['Contact']; 
    $text = $_POST['sexyText']; 
    trim($home); 
    trim($about); 
    trim($contact); 
    trim($text); 
    } 

    function post(){ 
     global $dom, $id, $home, $about, $contact, $text, $textp, $p, $op; 
       $textp = $dom->createTextNode($text); 
       $p->appendChild($textp); 
       $id->replaceChild($p, $op); 
       $dom->saveHTMLFile('index.html'); 
    } 


    post(); 
    echo 1; 


?> 

Der Fehler tritt bei der Funktion replaceChild auf.

+0

In Zeile 145 haben Sie das $ vergessen, oder KÖNNEN SIE UNS DIE FEHLERMELDUNG + WELCHE ZEILE GEBEN? –

+0

Welche Zeile? Wir brauchen viel mehr Kontext über die Fehlermeldung, obwohl meine Wette auf 'loadHTML()' fehlgeschlagen wäre, eine ungültige HTML-Datei zu parsen. –

+0

bei welcher Zeile ist der Fehler? –

Antwort

1
  $id->replaceChild($p, $op); 

An diesem Punkt $op ist eigentlich ein DOMNodeList, indem Sie Ihre getElementsByTagName Aufruf zurückgegeben. Sie können für einen replaceChild-Aufruf keine Nodeliste verwenden - sie erwartet einen DOMNode, nicht DOMNodeList.

+0

Oh, das macht Sinn. – VinceOmega

+0

Also nehme ich an, etwas wie '$ id-> replaceChild ($ p, $ id-> firstChild);' sollte dann funktionieren. – VinceOmega

+0

Oder '$ op-> item (0)', obwohl Sie sicherheitshalber überprüfen sollten, ob $ op tatsächlich eine Liste von Knoten hat. Es wäre immer noch eine Domnodeliste, wenn keine Übereinstimmungs-Tags gefunden würden, sondern nur eine 0-Länge-Liste. –

Verwandte Themen