This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Anfängerfrage zu return, array und object...
#1
Hallo,
neu in der javascript Welt und direkt schon ein problem Angel .  

function getData() {
	
		$.ajax({
		url: './db/functions.php?function=getDB',
		type: "GET",
		dataType: "json",
		success: function (data) {
		
			
				$.each(JSON.parse(JSON.stringify(data)), function(idx, obj) {
				obj_array.push(obj);
				});
			createTable(obj_array);
			
			}
            
		});
		return obj_array;
		
		
    }

Wenn ich in dieser Funkion createTable aufrufe, funktioniert alles wie erwartet.


function createTable(object_array) {
	

	console.log(object_array);
	var table = document.createElement("table");
	var innerT = "<thead><tr class='first_row'>";
	//get all table keys
	const table_headers = Object.keys(object_array[0]);
	//create table header_row from keys
	for	(var i =0; i < table_headers.length; i++) {
	innerT += "<td>"+table_headers[i]+"</td>"
	}
	innerT += "</tr> </thead><tbody>";
	//create table data_rows
	for (var i =0; i < object_array.length; i++) {
		innerT+= "<tr><td>"+
		object_array[i].id+"</td><td>"+
		object_array[i].field0_0+"</td><td>"+
		object_array[i].field0_1+"</td><td>"+
		object_array[i].field0_2+"</td><td>"+
		object_array[i].field1_0+"</td><td>"+
		object_array[i].field1_1+"</td><td>"+
		object_array[i].field1_2+"</td><td>"+
		object_array[i].field2_0+"</td><td>"+
		object_array[i].field2_1+"</td><td>"+
		object_array[i].field2_2+"</td></tr>";
}
innerT +="</tbody>"
table.innerHTML = innerT;

document.getElementById('table_holder').append(table);

}
Table wird angezteigt,
ausgabe in der Konsole (gekürzt):

Array(154) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
​
[0…99]
​​
0: Object { id: 1, field0_0: 0, field0_1: 0, … }
​​
1: Object { id: 2, field0_0: 1, field0_1: 0, … }
​​
2: Object { id: 3, field0_0: 0, field0_1: 1, … }
​​
...
​
[100…153]
​​
100: Object { id: 101, field0_0: 1, field0_1: 0, … }
​​
101: Object { id: 102, field0_0: 1, field0_1: 0, … }
​​...
​
<prototype>: Array []




Mein problem liegt hier:

<script type="text/javascript">
	$(document).ready( function() {		
		console.log(getData());
	})
</script>
Ausgabe in der Konsole:

Array []
​
0: Object { id: 1, field0_0: 0, field0_1: 0, … }
​
1: Object { id: 2, field0_0: 1, field0_1: 0, … }

​...

length: 154
​
<prototype>: Array []


Wie bekomme ich die daten, wie in der create_table function bzw. wie kann ich mit den daten weiter arbeiten?
Zitieren
#2
Ich denke ich habe meinen Fehler entdeckt. Das Array ist leer, weil die Abfrage kam, bevor die Daten aus der Datenbank eingelesen waren. Stellt sich für mich jetzt die Frage, wie ich darauf warten kann, dass die Daten verfügbar sind und erst dann ein Ergebnis via return zurück liefere.
Als Lösung markieren Zitieren
#3
Hi littles ich würde dir empfehlen auf jQuery zu verzichten. JavaScript bietet ausreichend Funktionalität und Methoden um ein XMLHTTP-Request gut zu verarbeiten.
"Gerne dürft ihr mir eine gute Bewertung da lassen aber auch gegenüber Kritik bin ich offen" Angel
Als Lösung markieren Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste