2016-08-15 2 views
0

Ich folge diesem Tutorial https://openenergymonitor.org/emon/node/107. Was ich versuche zu tun ist, verwenden Sie jquery und PHP, um Daten aus einer MySQL-Datenbank zu erhalten. Ich habe genau das getan, was das Tutorial gesagt hat, aber ich kann es nicht funktionieren lassen. Ich bekomme die Fehlermeldung, wenn ich die Seite lade. DieseAjax jquery post script funktioniert nicht

ist das, was ich getan habe:

api.php:

$dbhandle = mysql_connect($hostname, $username, $password) 
or die("Unable to connect to MySQL"); 

$selected = mysql_select_db($db,$dbhandle) 
or die("Could not select examples"); 

$result = mysql_query("SELECT * FROM todolist"); 
$array = mysql_fetch_row($result); 

echo json_encode($array); 

(. Ich weiß, dass es besser ist, PDO zu verwenden, aber das ist nur zum Testen)

Das jquery-Skript:

<script language="javascript" type="text/javascript"> 
    $(function() { 
      $.ajax({          
       url: 'api.php', data: "", dataType: 'json', 
       success: function(data) { 
       var id = data[0]; 
       var description = data[1]; 
       $('#output').html("<b>id: </b>"+id+"<b> description: </b>"+description); 
       }, 
       error: function() { 
       alert("Fail"); 
       } 
      }); 
      }); 
    </script> 

Als ich api.php besuchen das ist, was ich bekommen:

["161","true","werken\n","12"] 

wenn ich console.log (Argumente) verwenden, um dies zeigt sich:

[Object, "parsererror", SyntaxError: Unexpected token < in JSON at position 0 at Object.parse (native) at parseJSON …] 
0 
: 
Object 
1 
: 
"parsererror" 
2 
: 
SyntaxError: Unexpected token < in JSON at position 0 at Object.parse (native) at parseJSON (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js:16:11709) at b$ (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js:16:1382) at w (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js:18:8326) at XMLHttpRequest.d (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js:18:14247) 
callee 
: 
(err) 
length 
: 
3 
Symbol(Symbol.iterator) 
: 
values() 
__proto__ 
: 
Object 

Ich versuche, etwa 3 bis machen diese Arbeit für Stunden jetzt, und es macht mich ziemlich verrückt. Ich hoffe, dass jemand das Problem mit meinem Skript erklären kann.

Edit:

ich es fest. Es gab ein Problem mit einer Seite in der api.php.

+0

Drücken Sie F12 in Ihrem Browser, um die Netzwerkanforderung anzuzeigen, stellen Sie sicher, dass keine Fehler vorhanden sind, und es sieht so aus, als würden Sie erwarten, und prüfen Sie, ob dort Fehler vorhanden sind. Statt 'alert (" Fail ")' könntest du 'console.log (arguments)' machen, um alle Informationen zu sehen, die an die 'error' Funktion übergeben wurden, um zu sehen, ob dir irgendetwas angezeigt wird. –

+0

Was sehen Sie in der Entwicklerkonsole? Dies ist auch GET-Anfrage, nicht POST. – sed

+1

BTW, es sieht nicht so aus als wäre die Beschreibung in 'data [1]', sondern in 'data [2]'. Sie sollten entweder die gewünschten Spalten auswählen oder mysql_fetch_assoc verwenden, um auf die Spalten nach Namen zugreifen zu können. – Barmar

Antwort

0

Es liegt wahrscheinlich daran, dass die URL keinen absoluten Pfad verwendet. Führen Sie dies auf Ihrem lokalen Rechner aus? Sind die 2 Skripte (html und php) im gleichen Verzeichnis?

Sie sollten versuchen, das Developer Tool Ihres Browsers zu verwenden, um den Netzwerk-AJAX-Aufruf zu überprüfen und zu verfolgen. Sie erhalten wahrscheinlich einen Fehler 404.

Sie können weitere Informationen über den Fehler erhalten, indem dies zu tun:

error: function(err) { 
       console.log(err); 
       } 

Die Details der Fehler auf Ihrer Entwickler-Tool-Konsole angezeigt. In den meisten Fällen werden die Entwicklerwerkzeuge durch Drücken von Strg + Umschalt + I auf dem PC oder über das Browser-Menü geöffnet.

+0

Dies ist auf einer Website, die Skripte sind im selben Verzeichnis. Ich bekomme 0 Fehler. Wenn ich console.log (err) verwende, wird dies angezeigt: Objekt {readyState: 4, responseText: " ↵ ↵ " ["161 "," true "," werken \ n "," 12 "] ↵↵↵↵", Status: 200, StatusText: "OK"} –

+0

Das bedeutet also, dass dein PHP-Skript kein JSON-Objekt zurückgibt. Anscheinend gibt es eine HTML-Seite zurück, die die JSON-Zeichenfolge im body-Tag enthält. – Scalpweb

Verwandte Themen