2012-04-01 2 views
0

Dieser Ajax ruft keine Informationen aus seiner PHP-Datei ab, wie es sollte, und als ich das Javascript in Firebug untersuchte, bemerkte ich, dass responseText undefiniert zurückkehrte.

ist die Javascript:

Warum gibt die Variable responseText undefiniert zurück und greift nicht auf PHP zu, wie es sollte?

function getTeams(sport) 
{ 
    var req = new XMLHttpRequest(); 
    var nextTeam, nextOption; 

    // callback function, using "closure" 
    req.onreadystatechange = function() 
    { 
     if((req.readyState == 4) && (req.status == 200)) 
     { 
      var result = req.responseText; 

      // array teams created here 
      var teams = result.split(", "); 

      for(var i = 0; i < teams.length; i++) 
      { 
       nextTeam = teams[i]; 
       nextOption = new Option(nextTeam); 

       /* add the new option to the option list 
       ("null" for IE5, "-1" for all other browsers) */ 
       try 
       { 
        document.getElementById("teamsList").add(nextOption, -1); 
       } 
       catch(e) 
       { 
        document.getElementById("teamsList").add(nextOption, null); 
       } 
      } 
     } 
    } // end of closure 

    req.open("GET", "favoriteSport.php?sport=" + sport, true); 
    req.send(null); 
}<br /><br /> 

Hier ist die PHP ist:

<?php 
    $sport = $_GET["sport"]; 

    $teams = array("basketball" => "Atlanta Hawks, Chicago Bulls, New York Knicks", 
        "baseball" => "Atlanta Braves, Chicago Cubs, New York Yankees", 
        "football" => "Atlanta Falcons, Chicago Bears, New York Giants"); 

    return $teams[$sport]; 
?><br /><br /> 

... und hier ist der relevante html:

<select onchange = "getTeams(this.value);"> 
     <option> 
      --select a sport-- 
     </option> 
     <option value = "basketball"> 
      basketball 
     </option> 
     <option value = "baseball"> 
      baseball 
     </option> 
     <option value = "football"> 
      football 
     </option> 
    </select> 

    <select id = "teamsList"></select> 
+3

Was bedeutet die PHP-Datei Rückkehr in Firebug? Du benutzt 'return'? WARUM? versuche 'echo'. Und Sie sollten sich ernsthaft mit JSON beschäftigen. –

+1

JSON Matched mit Jquery macht DoM Manipulation viel glatter (+1 @nav_nav) – ChrisK

Antwort

1

Es sieht aus wie dein Problem ist h ere:

return $teams[$sport]; 

Versuchen

echo $teams[$sport]; 
+0

HAHAHA! Unglaublich, ich habe in jeden Winkel des Javascript geschaut, habe das nicht gesehen. Vielen Dank! –

+0

Deshalb sollten Sie immer Ihre Antwort von der PHP-Datei (mit Firebug) überprüfen, um festzustellen, wo das Problem liegt (in PHP oder JS). Grundlegende Sachen. –

Verwandte Themen