msr972
Goto Top

JSON Object auf Variable zuweisen

Hallo administrator.de Mitglieder,

ich habe scheinbar gerade ein riesen Brett vor dem Kopf und komme mit jQuery / JSON / PHP nicht weiter. Deshalb wäre ich über eine kurze Hilfe dankbar.

Ich habe eine Seite, die u.A. auf jQuery basiert. Nun habe ich eine PHP Datei, die ich sowohl im PHP Bereich benötige (für includes) als auch für JS/JQuery. Dafür habe ich eine $_GET Abfrage drinnen, die das entsprechende als JSON Daten zurückliefert.
constants.php
<?php

	$customerStatus[1]		= "Aktiv";  
	$customerStatus[98]		= "Hinweis zur Sperrung";  
	$customerStatus[99]		= "Gesperrt";	  

	$constructionStatus[1]	= "Aktiv / Nur Webseite";  
	$constructionStatus[2]	= "Aktiv / Webseite + AÜ";  
	$constructionStatus[91]	= "Web / Hinweis zur Beendigung / Sperrung";  
	$constructionStatus[92]	= "Web + AÜ / Hinweis zur Beendigung / Sperrung";  
	$constructionStatus[99]	= "Gesperrt";  

	if( $_GET['type'] == 'customers' ) {  
		print json_encode($customerStatus);
	} else if ( $_GET['type'] == 'constructions' ) {  
		print json_encode($constructionStatus);
	}
	
?>

Nun gibt es eine application.js die eigentlich nur den ausgelagerten JS/jQuery Code beinhaltet (also ab $(document).ready(function() )

Darin enthalten sind u.A.
	function getConstants(type) {
		$.ajax({
			type: 'GET',  
			url: '/dh/constants.php',  
			dataType: 'json',  
			data: "type="+type,  
			success: function(data){
				return data;
			}
		});
	};

und
	function getCustomerDetails(custID){
		var tempdata = "";  
		$.ajax({
			url: '/dh/customerDetails.php',  
			dataType: 'json',  
			data: "custID="+custID,  
			beforeSend: function() {
				$("#helpercontent").css('display','none');  
			},
			success: function(data){
                                // Bischen code entfernt, da nicht relevant
				var test = getConstants('customers');  
				console.log( "TEST: "+test );  
				$.each( test, function(key, value) {
					if( key == data.custStatus ) {
						$('<option value="'+key+'" selected>'+value+'</value>').appendTo("#custStatus");  
					} else {
						$('<option value="'+key+'">'+value+'</value>').appendTo("#custStatus");  
					}
				});
			}
		});
	};

Beim Aufruf eines bestimmten Links wird die Funktion getCustomerDetails() mit Parameter aufgerufen und die Daten aus der DB geladen. Das funktioniert soweit so gut.
Es sollte dann ebenfalls im success: Teil eine Zuweisung der var test erfolgen. Dies passiert über den Funktionsaufruf zu getConstants('customers').
Nur bleibt die var test einfach leer bzw. sie hat NULL als Wert.

Natürlich habe ich auch schon in der PHP ein echo/print durch ein return ersetzt und bin auf keinen grünen Zweig gekommen. Die Funktion getConstants liefert auch ein JSON Object zurück, ich seh es ja in Firebug. Aber wieso bekommt die Variable den Wert bzw. das JSON Object nicht zugewiesen?

Bin dankbar für jeden Tip..


Grüße


EDIT:

Ok, "Problem" gelöst..Das Brett konnte abgesägt werden..

Bei getConstants handelte es scih ebenfalls um einen async aufruf, wodurch test nicht befüllt werden konnte, da noch keine daten vorlagen. ich habe das problem QnD gelöst, indem ich die entsprechenden Punkte direkt in die getConstants eingepackt habe.
Sicherlich keine saubere Lösung und muss noch geändert werden (z.B. Callback)

Content-Key: 173448

Url: https://administrator.de/contentid/173448

Ausgedruckt am: 28.03.2024 um 19:03 Uhr