• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JSON AJAX Hilfe

yss

Mitglied
Guten Abend
Ich bin gerade gezwungen JSON zu benutzen, da ich Daten aus einer MySQL über PHP und Ajax übermitteln will, um diese dann in JavaScript zu verarbeiten.
Ich habe es nun soweit kapiert, dass ich in PHP ein Array anlegen muss
Code:
$ret = Array("id" => "","name" => "","bildUrl" => "");
Dann kann ich die Daten fühlen
Code:
$ret["name"] = "xy";
Und Am Schluss wird dann das Array ausgegeben
Code:
echo(json_encode($array));
Und in JavaScript muss ich es dann natürlich verarbeiten
HTML:
var json = $.parseJSON(antwortVomServer);
um auf die Items zuzugreifen
HTML:
alert(json.name);

Wenn ich das mit einem Item aus der Datenbank/Tabelle mache funktionier es wunderbar, aber wie muss ich es abändern, wenn ich in meine Array/JSON mehrere Datensätze habe?
 
Werbung:
Moin,
wenn du in PHP zb. folgendes Array hast:
PHP:
$ret['users'][0]["name"] = "hans";
$ret['users'][1]["name"] = "Kalle";
 usw...
Kannst du das, da du jQuery nutzt folgendermaßen auslesen:
HTML:
var json = $.parseJSON(antwortVomServer);
$.each(json.users, function(i,item){
  alert ( "Item " + i + " ist " + item.name );
});

// Du kannst auch direkt json.users[0].name ansprechen z.B.
Hoffe das hilft.


MfG
 
Wunderbar, habs hinbekommen, danke ;-)
Noch ne Frage: Ich kann doch dann in JS auch Werte in meinem JSON-Objekt verändern, oder? Weil ich würde gerne noch einen kleinen Filter einbauen und zwar wenn die id einen bestimmten Wert annimmt, dann soll ein Wert geändert werden. Klappt auch soweit in der Funktion, aber in einer anderen steht dann wieder der alte Wert drin -.-
Code:
function overwriteSrc(mode){	$.ajax({
		type: "POST",
		url: "php/getVotedList.php",
		data: 	"code="+code,
		success: function(html){
		    json = $.parseJSON(html); //json.['vote1'] 
		    $.each(voteItemList, function(key, val){
		    	//Wenn id == 11, da json.vote1 = 11
		    	if(val['id'] == json.vote1){
		    		val['voteSrc'] = 'vote_green.jpg';
		    	}
		    	
		    	if(voteItemList.length-1 == key){
		    		//alert(voteItemList.length-1+" : "+key);
		    		if(mode == 'list'){
		    			insertVoteList();
		   			}else{
		    			insertSearchVoteList();
		   			}
		    	}
		    });
		}
	});	
}


Wenn ich dann den Wert "voteSrc" vom Item mit der id 11 will, dann gibt er mir wieder den alten Wert aus, anstatt "vote_green.jpg".
Die IF-Abfrage im Filter wird aber ausgeführt, dass habe ich schon mit einem Alert ausprobiert. Mein nächster Gedanke war, dass die each länger braucht, als das insertVoteList() aufgerufen wird, deswegen die Abfrage, ob die each am Ende angelangt ist. Dies führt aber auch nicht zum gewollten Erfolg...
 
Werbung:
Du veränderst nur das object val und nicht das haupt-object voteItemList
Probier es mal so:

Code:
function overwriteSrc(mode){    $.ajax({
        type: "POST",
        url: "php/getVotedList.php",
        data:     "code="+code,
        success: function(html){
            json = $.parseJSON(html); //json.['vote1'] 
            $.each(voteItemList, function(key, val){
                //Wenn id == 11, da json.vote1 = 11
                if(val.id == json.vote1){
                    voteItemList[key].voteSrc = 'vote_green.jpg';
                }
                
                if(voteItemList.length-1 == key){
                    //alert(voteItemList.length-1+" : "+key);
                    if(mode == 'list'){
                        insertVoteList();
                       }else{
                        insertSearchVoteList();
                       }
                }
            });
        }
    });    
}
 
Zurück
Oben