Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 6 von 6

Thema: AJAX-Frage

  1. #1
    Zaungast
    Registriert seit
    09.10.2017
    Beiträge
    13

    Standard 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' => 'la@la.de',
        
    '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. #2
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.230

    Standard

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

  3. #3
    Zaungast
    Registriert seit
    09.10.2017
    Beiträge
    13

    Standard

    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>

  4. #4
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.230

    Standard

    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

  5. #5
    Zaungast
    Registriert seit
    09.10.2017
    Beiträge
    13

    Standard

    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" => "la@la.de",
    	"birthday" => "12.12.1212"
        
    		
        );
    	
    $myJSON = json_encode($array);
    		
    echo $myJSON;
    	 
        ?>

  6. #6
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.230

    Standard

    schön, dass es geht
    Christian

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •