• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] JSON String mittels AJAX ausgeben?

Muffinman

New member
Hallo,
nachdem ich mich stundenlang durch sämtliche Foren und Einträge gewühlt und zig Versuche unternommen habe mein Problem zu lösen, habe mich ich mich nun doch vor der völligen Verzweiflung hier angemeldet um nach Hilfe zu fragen.

Ich möchte MYSQL Daten mittels PHP als JSON auf meiner HTML Seite per AJAX abrufen und verwenden, allerdings scheitere ich. Der String scheint mir soweit in Ordnung, doch auf die jeweiligen Daten kann ich nicht zugreifen, lediglich den kompletten String ausgeben.
Ist sicher etwas ganz Simples, aber ich kriegs einfach trotz Versuchen und Beispielen nicht hin! :-(

Die Abfrage (json.php)
Code:
<?
include('inc/mysql_connect.php');

$qry_active='SELECT count( * ) AS counta, fbid
FROM database2
WHERE Month( `time` ) = Month( Now( ) )
GROUP BY fbid
ORDER BY counta DESC
LIMIT 3;';

$fet = mysql_query($qry_active);

    $json = array();
    while($r=mysql_fetch_array($fet)){
    $json[] = $r;
    }

echo $json_data=json_encode($json);
?>

Die Ausgabe der json.php
Code:
[{"0":"17","counta":"17","1":"1234","fbid":"1234"},{"0":"15","counta":"15","1":"4567","fbid":"4567"},{"0":"9","counta":"9","1":"8910","fbid":"8910"}]

Ausgabe (out.html)
Code:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js">
</script>
<script>
$.ajax({url: "httx://xxx.xo/json.php"}).done(function(data){
$("#fbid").append(data.fbid);
$("#counta").append(data.count);
});
</script>
</head>
<body>
<p id="fbid">FBID: </p>
<p id="counta">Count: </p>
</body>
</html>

Die Felder bleiben leer, allerdings nicht, wenn ich append(data); ohne z.B. fbid nutze.
Kann mir halt nur vorstellen, dass der JSON String nicht stimmt.
Außerdem sinds ja genau drei Einträge und ich frage mich, wie ich quasi ID 1 + Count 1 ausgebe, also quasi alles seperat in Divs schicken kann.

Gruß,
Marvin
 
Zuletzt bearbeitet:
Wieso sind denn jetzt plötzlich sämtliche Beiträge verschwunden? Vermute, das hängt wieder damit zusammen, dass die erneut freigeschaltet werden müsssen...
 
Zuletzt bearbeitet:
Das Schlimme ist, ich hatte den vorhin schon freigegeben. Aber sobald jemand antwortet springt der zurück und man muss ihn dann nochmal 2 x freigeben. Ist mir ein Rätsel.
 
@Muffinman: AJAX liefert erst einmal nur Strings. Wenn das JSON ist, kannst du mit
Code:
data = JSON.parse(data);
den String parsen und hast dann ein normales Objekt, bei dem du auch die Eigenschaften abrufen kannst.

Wenn du faul bist, kannst du auch einfach jQuery bemühen: https://api.jquery.com/jQuery.ajax/ -> der dataType Parameter.
 
- Vermutlich ist das kein richtiges JSON. Packt mal noch ein header("Content-type: application/json"); in deine json.php unterhalb von dem include().
- Dein echo ist invalide und sollte ohne eine Variablen deklaration geschrieben werden:
Code:
echo json_encode($json);


Was das Freischalten angeht: Das klingt doch eigentlich nach dem Bug in VBulletin, oder?
 
Hey,
danke schon mal für eure Antworten.
Der json String sieht durch das einsetzen des Headers schon besser aus.
Ob nun mit oder ohne JSON.parse, die Felder bleiben nach wie vor leer... :-(

Habe es mal mit:
Code:
       $.getJSON('httx://xxx.xo/json.php', function(data) {
               alert(data);

        });
Versucht.. Beim alert kommt nur "[object Object],[object Object],[object Object]"
 
Zuletzt bearbeitet:
Ja, das ist richtig. alert kann keine Objekte anzeigen. Dafür musst du über sie iterieren.
 
Mach' besser ein
Code:
console.log(data);
und schau' dir das in der Konsole an (im FF mit F12) - da kannst du dann auch durch die Eigenschaften durchklicken.
 
Zurück
Oben