hawkmaster: jQuery Get Daten

Hallo zusammen,

ich bin noch nicht so fit mit jQuery und Ajax request.

Ich mache den Request wie folgt:
Auf der PHP Seite hole ich die Daten von einer MySQL DB und mache einen ;
$sqldatajson = json_encode($sqldata);
echo $sqldatajson;

  
$.get("getData.php",  
		{  
			number: oppnr  
		},  
		function(data){  
			  
  
			alert(data.customername);//geht nicht ist leer  
			alert(data['customername']);//ist auch leer  
			alert(data);  
			  
		});  
  

der alert(data) bringt folgendes:

[{"number":"1","rating":"10","description":null,"customername":"Testkunde1","customernumber":"1","regname":"South-West","status":"Hallo"}]

Ich dachte man könnte nun gezielt den Kundenamen mit
data['customername']
herausbekommen.
Leider ist die Ausgabe aber leer.

Hat jemand eine Idee

vielen Dank und viele Grüße
hawk

  1. Meine Herren!

    [{"number":"1","rating":"10","description":null,"customername":"Testkunde1","customernumber":"1","regname":"South-West","status":"Hallo"}]

    Ich dachte man könnte nun gezielt den Kundenamen mit
    data['customername']
    herausbekommen.

    Dein JSON-Objekt besteht aus einer Liste [] von Objekten {}.
    In diesem Fall besteht die Liste nur aus einem Listenelement.
    Du kannst data[ 0 ][ 'customername' ] schreibne, um den Kundennamen gezielt anzusprechen.

    --
    “All right, then, I'll go to hell.” – Huck Finn
    1. Hallo

      Du kannst data[ 0 ][ 'customername' ] schreibne, um den Kundennamen gezielt anzusprechen.

      Leider nein,
      das hatte ich auch schon versucht. Ist auch leer.

      vielen Dank und viele Grüße
      hawk

      1. Meine Herren!

        Hallo

        Du kannst data[ 0 ][ 'customername' ] schreibne, um den Kundennamen gezielt anzusprechen.

        Leider nein,
        das hatte ich auch schon versucht. Ist auch leer.

        Dann liegen die Daten vielleicht nur als String vor?
        Was gibt ein alert( typeof data ); aus?
        Wenn das "String" ist, musst du den JSON-String erst noch parsen:

        data = JSON.parse( data );

        --
        “All right, then, I'll go to hell.” – Huck Finn
        1. Wenn das "String" ist, musst du den JSON-String erst noch parsen:

          data = JSON.parse( data );

          Das sollte jQuery automatisch tun, wenn der Server den HTTP-Header »Content-Type: application/json« sendet. In PHP:

          [link:http://www.php.net/manual/de/function.header.php@title=header]('Content-Type: application/json');

          jQuery lässt sich auch dazu zwingen, die Serverantwort als JSON zu parsen.

          Für $.ajax die Option angeben:

          {dataType: 'json'}

          Für $.get den Datentyp als Parameter nach dem Callback übergeben:

          $.get('URL', function() {}, 'json')

          Mathias

  2. Moin

    $.get("getData.php",
    {
    number: oppnr
    },
    function(data){

      	alert(data.customername);//geht nicht ist leer  
      	alert(data['customername']);//ist auch leer  
      	alert(data);  
      	  
      });  
    
    
    >   
      
    ich weiß nicht warum hier niemand die spezielle Ajax-JSON Funktion im jQuery nennt. Diese heißt: [getJSON](http://api.jquery.com/jQuery.getJSON/)  
      
    Beim Callback gibt es direkt ein Objekt zurück, auf das du wunschgemäß direkt zugreifen kannst:  
      
    ~~~javascript
      
    $.getJSON("getData.php?number="+oppnr,  
     		function(data){  
     			  
     			alert(data.customername);//geht nicht ist leer  
     			alert(data['customername']);//ist auch leer  
     			alert(data);  
     			  
     		});  
    
    

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    ### Henry L. Mencken ###
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ### Viktor Frankl ###
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    1. Hallo,

      ich weiß nicht warum hier niemand die spezielle Ajax-JSON Funktion im jQuery nennt.

      Weil $.getJSON() auch nur ein weiterer Shortcut für $.ajax() mit einer Vorbelegung der Options ist, daher habe ich $.ajax() zuerst genannt…

      Mathias

      1. Moin

        Hallo,

        ich weiß nicht warum hier niemand die spezielle Ajax-JSON Funktion im jQuery nennt.

        Weil $.getJSON() auch nur ein weiterer Shortcut für $.ajax() mit einer Vorbelegung der Options ist, daher habe ich $.ajax() zuerst genannt…

        Naja... Aber für nen Anfänger ist $.getJSON handlicher weil er sofort am Namen sieht, dass dies ein Get-Request ist und JSON zurückkommt. So muss man keine Parameter extra für den Rückgabetyp angeben. ;)

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
        ### Henry L. Mencken ###
        -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
        ### Viktor Frankl ###
        ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)