Announcement

Collapse
No announcement yet.

AJAX-Frage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • AJAX-Frage

    Ich will einen Array, den ich in das JSON-Format bringe, aus einer php-Datei mit AJAX wie folgt auslesen:

    HTML Code:
    <!DOCTYPE html>
    <html lang="en">
    
      <head>
        <meta charset="utf-8">
    	
    	<link rel="stylesheet" type="text/css" href="css\mystyle.css">
    	<link rel="icon" href="favicon.ico" type="image/x-icon"/>
        <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
        
    	
       
       </head>
       
       <body>
    
       <script>
       
      
       
       
       function init(){
       
      
    	    var request;
     
    	if (window.XMLHttpRequest) {
    		
    		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
    		
    	} else if (window.ActiveXObject) {
    		
    		try {
    			
    			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
    			
    		} catch (e) {
    			
    			try {
    				
    				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
    				
    			} catch (e) {}
    		}
    	}
    	
    	
    	var url = 'dbread.php';
    
    		request.open("GET", url, true);
    		
    		request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    		
    		request.send();
    	
    		xhttp.onreadystatechange = function() {
    			  if (this.readyState == 4 && this.status == 200) {
    			    document.getElementById("demo").innerHTML = this.responseText;
    			  }
    			};
    
       }
       
      </script>   
       
       <div id="demo">
       
       </div>
       
      <input type="button" value="Klick" onclick="init()">
       
       </body>
       
    
       
    </html>
    Hier die PHP-Datei:

    PHP Code:
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="css\mystyle.css">
        <link rel="icon" href="favicon.ico" type="image/x-icon"/>
        <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
        <title>initial page</title>
        

        
      </head>
       
       <body>
       
       <?php 
        
         

         

     $array 
    = array(
        
    'firstname' => 'Elke',
        
    'lastname'  => 'Mueller',
        
    'street' => 'Hansstrasse',
        
    'number' => '12',
        
    'postal' => '12312',
        
    'town' => 'Mannheim',
        
    'country' => 'Germany',
        
    'email' => '[email protected]',
        
    'birthday' => '12.12.1212'
        
            
        
    );

    $myJSON json_encode($array)
         
     
         
        
    ?>
            
       
       </body>
       
    </html>
    ...das klappt aber leider nicht, es kommt nichts, wenn ich auf den Button drücke. Ich verstehe nicht, woran das liegen könnte.

  • #2
    Es ist keine HTML-Seite zurückzugeben, sondern nur der Inhalt.
    Einen Inhalt hast du nicht.
    Christian

    Comment


    • #3
      Vielen Dank für die Antwort, leider stehe ich ein bisschen auf dem Schlauch in Bezug auf das Thema "Inhalt". Ich habe ja eigentlich eine Ausgabe im JSON-Format in der PHP-Datei; ich habe nun den Code meiner html angepasst, ich verstehe aber nicht, wieso es immer noch nicht von Erfolg gekrönt ist - ich gebe aber nun auch in der PHP-Datei $myJSON = json_encode($array); aus, also am Ende steht nunj auch echo $myJSON;

      Code:
      <!DOCTYPE html>
      <html lang="en">
      
        <head>
        
          <meta charset="utf-8">
      	
      	<link rel="stylesheet" type="text/css" href="css\mystyle.css">
      	<link rel="icon" href="favicon.ico" type="image/x-icon"/>
          <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
          
      	 <link href = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-classic/resources/theme-classic-all.css" 
               rel = "stylesheet" />
            <script type = "text/javascript" 
               src = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js"></script>
      		 
      	 <title></title>
         
         </head>
         
         <body>
      
         <script type = "application/javascript">
         
         
         function init(){
          
                var data_file = "dbread.php";
                var http_request = new XMLHttpRequest();
                try{
                   // Opera 8.0+, Firefox, Chrome, Safari
                   http_request = new XMLHttpRequest();
                }catch (e){
                   // Internet Explorer Browsers
                   try{
                      http_request = new ActiveXObject("Msxml2.XMLHTTP");
      					
                   }catch (e) {
      				
                      try{
                         http_request = new ActiveXObject("Microsoft.XMLHTTP");
                      }catch (e){
                         // Something went wrong
                         alert("Your browser broke!");
                         return false;
                      }
      					
                   }
                }
      			
                http_request.onreadystatechange = function(){
      			
                   if (http_request.readyState == 4  ){
                      // Javascript function JSON.parse to parse JSON data
                      var jsonObj = JSON.parse(http_request.responseText);
      
                      // jsonObj variable now contains the data structure and can
                      // be accessed as jsonObj.name and jsonObj.country.
                      document.getElementById("demo").innerHTML = jsonObj.firstname;
                     
                   }
                }
      			
                http_request.open("GET", data_file, true);
                http_request.send();
             }
      		
          </script>
      	
         
         
        </script>   
         
         <div id="demo">
         
         </div>
         
        <input type="button" value="Klick" onclick="init()">
         
         </body>
            
         
      </html>

      Comment


      • #4
        Es ist die PHP-Datei anzupassen, die per Ajax aufgerufen wird.
        Diese hat nur das Ergebnis zurückzugeben, keine HTML-Seite, also echo $myJSON
        Ggf. schau in den Quellcode der hTML-Seite, benutze die Entwicklerwerkzeuge des Firefox und schau nach, was in der Antwort vom Server steht
        Christian

        Comment


        • #5
          Vielen Dank, jetzt ist der Groschen (Thema "Inhalt") gefallen. Nach der aktualisierung der mtml-Datei sieht meine PHP-Datei nun wie folgt aus (und es geht):

          Code:
          <?php 
              
              include 'dbcredentials.php';
          
           $array = array(
              "firstname" => "Elke",
          	"lastname"  => "Mueller",
          	"street" => "Hansstrasse",
          	"number" => "12",
          	"postal" => "12312",
          	"town" => "Mannheim",
          	"country" => "Germany",
          	"email" => "[email protected]",
          	"birthday" => "12.12.1212"
              
          		
              );
          	
          $myJSON = json_encode($array);
          		
          echo $myJSON;
          	 
              ?>

          Comment


          • #6
            schön, dass es geht
            Christian

            Comment

            Working...
            X