2016-06-20 20 views
6

Ich möchte JSON-Daten zurückgeben, aber mein Code funktioniert nicht. Ich bekomme keine Fehlermeldung. Ich habe index.php, ajax.php und db.php. Db.php funktioniert. Aber mein Ajax-Code funktioniert nicht. Wo ist mein Fehler?Zurückgeben von JSON-Daten mit PHP

index.php:

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> 
</head> 
<body> 
    <div id="test" style="width:500px;height:400px; margin:20px auto;"></div> 
<script> 
    $(window).load(function() { 
     $.ajax({ 
      dataType: "json", 
      url: 'ajax.php', 
      success:function(data){   
       $("#test").html(data); 
      } 
     }); 
    }); 
</script> 
</body> 
</html>  

ajax.php:

<?php 
require 'db.php'; 
$query="select lat,lng from locations order by id"; 
$result = pg_query($link, $query); 
if (!$result) { 
echo "An error occurred_xxx.\n"; 
}else { 
$arr = pg_fetch_all($result); 
echo json_encode($arr); 
} ?> 
+2

Keinerlei Fehler Konsole zeigen Ihre Entwickler? Können Sie die Ausgabe der AJAX-Anfrage im Netzwerkfenster anzeigen? –

+0

Ich werde jetzt zu http: //localhost/php/index.php Navigiert. –

Antwort

6

Wenn Sie erwarten JSON Sie müssen unabhängig sie senden. Was Sie bei Ihren Skriptfehlern tun, lautet text/html. Versuchen Sie folgendes:

header("Content-Type: application/json"); 
require 'db.php'; 
$query="select lat,lng from locations order by id"; 
$result = pg_query($link, $query); 
$response = array(); 
if (!$result) { 
    $response = array(
     'status' => false, 
     'message' => 'An error occured...' 
    ); 
}else { 
    $response = array(
     'status' => true, 
     'message' => 'Success', 
     'data' => ph_fetch_all($result) 
    ); 
} 

echo json_encode($response); 

Jetzt wie Sie sehen, wir tatsächliche JSON senden, durch eine korrekte Content-Type Kopfeinstellung und nicht die Mischklartext und json auf.

diese Antwort in Ihrer jQuery So zu behandeln, konditionieren einfach die Antwort:

$(window).load(function() { 
    $.ajax({ 
     dataType: "json", 
     url: 'ajax.php', 
     success:function(data){   
      if(!data.status) { 
       $("#test").html("ERROR: " + data.message); 
      } else if(data.status) { 
       $("#test").html(data); 
      } 
     } 
    }); 
}); 
+0

Vielen Dank. –

+0

Ich habe dieses Beispiel versucht Ich habe json_decode() erwartet Parameter 1 als String, Array in was bedeutet? –

+0

@ FatihDoğan Entschuldigung, es sollte 'json_encode()' gewesen sein. – Darren

Verwandte Themen