Array als Config übergeben
Hallo,
ich habe eine jquery aufruf, welche per load einen Wert von einem PHP Script entgegen nimmt:
Soweit geht das auch.
Nun sind aber die Werte, welche an das PHP Script gehen dynamisch. Manchmal gibt es attr2 und manchmal nicht.
Jetzt habe ich ein Array mit folgendem Aufbau:
Perfekt wäre natürlich, wenn ich nun das komplette Array übergeben kann.
Aber ich denke das geht nicht.
Mein Versuch war nun, dass Array in mein Zeichenstring zu bringen:
Nun muss ich den String innerhalb dem {} bei .load übergeben.
Kann mir jemand weiterhelfen?
Evtl. mache ich es ja auch komplett falsch.
Danke
ich habe eine jquery aufruf, welche per load einen Wert von einem PHP Script entgegen nimmt:
$("#selectbox_1").load("/OttAttrSearch",{cat: categoryID, field: field, attr1: value, attr2: ''});
Soweit geht das auch.
Nun sind aber die Werte, welche an das PHP Script gehen dynamisch. Manchmal gibt es attr2 und manchmal nicht.
Jetzt habe ich ein Array mit folgendem Aufbau:
var attrArray = {};
attrArray['attr1'] = 'test';
attrArray['attr2'] = 'test2';
Perfekt wäre natürlich, wenn ich nun das komplette Array übergeben kann.
Aber ich denke das geht nicht.
Mein Versuch war nun, dass Array in mein Zeichenstring zu bringen:
var output = '';
output += 'cat:categoryID';
output += ',field:field';
$.each(attrArray, function(key, value) {
output += "," + key + ":" + value;
});
alert(output);
Nun muss ich den String innerhalb dem {} bei .load übergeben.
$("#selectbox_1").load("/OttAttrSearch",{output);
Kann mir jemand weiterhelfen?
Evtl. mache ich es ja auch komplett falsch.
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204316
Url: https://administrator.de/contentid/204316
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
7 Kommentare
Neuester Kommentar
var attrArray = {};
... beachte, dass { ... } kein Array ist, sondern ein Objekt (zwar ist Array auch ein Objekt ....)/* setze default Werte */
var attrObj = { cat: categoryID, field: field };
/* setze zusätzliche Werte */
attrObj.attr1 = 'value1';
attrObj.attr2 = 'value2';
/* usw. */
/* call */
$("#selectbox_1").load( "/OttAttrSearch", attrObj );
Hi ottscho,
du kannst mit JSON PHP-Arrays an JavaScript übergeben. Einfaches Array-Beispiel:
Übergabe an eine JavaScript-Funktion:
In Ansicht->Quelltext der Seite steht nun: test1(["wert1","wert2","wert3"]);.
Dieses Array kannst du in der JavaScript-Funktion ganz normal verarbeiten.
Allerdings kann JavaScript keine assoziative Arrays verarbeiten, sondern nur nummerisch indizierte.
Hier musst du den Index in der JavaScript-Funktion selber basteln. Ein assoziatives Array-Beispiel:
Die Übergabe an eine JavaScript-Funktion machst du wie oben, allerdings steht jetzt im Seitenquelltext:
test2({"cat":"wert1","field":"wert2","attr1":"wert3"});.
Beachte die geschweiften Klammern: Das ist nun ein Objekt. In JavaScript gibt es die for . . . in-Schleife: for(index in Objekt).
Damit kannst dun nun auf die Objektinhalte zu greifen. Beispiel:
Vielleicht kannst du das ja gebrauchen.
Gruß
Günni
du kannst mit JSON PHP-Arrays an JavaScript übergeben. Einfaches Array-Beispiel:
$array1 = array("wert1","wert2","wert3");
Übergabe an eine JavaScript-Funktion:
test1(<?php echo json_encode($array1);?>);
In Ansicht->Quelltext der Seite steht nun: test1(["wert1","wert2","wert3"]);.
Dieses Array kannst du in der JavaScript-Funktion ganz normal verarbeiten.
Allerdings kann JavaScript keine assoziative Arrays verarbeiten, sondern nur nummerisch indizierte.
Hier musst du den Index in der JavaScript-Funktion selber basteln. Ein assoziatives Array-Beispiel:
$array2 = array("cat" => "wert1", "field" => "wert2", "attr1" => "wert3");
Die Übergabe an eine JavaScript-Funktion machst du wie oben, allerdings steht jetzt im Seitenquelltext:
test2({"cat":"wert1","field":"wert2","attr1":"wert3"});.
Beachte die geschweiften Klammern: Das ist nun ein Objekt. In JavaScript gibt es die for . . . in-Schleife: for(index in Objekt).
Damit kannst dun nun auf die Objektinhalte zu greifen. Beispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">
<!--
//Array verarbeiten
function test1(para){
for(var index = 0;index < para.length;index++){
document.write(para[index] + "<br>");
}
return true;
}
//Objekt verarbeiten
function test2(para){
//Die Keys im Array
var keys = new Array("cat", "field", "attr1");
var index = 0;
//Mit keys[index] wird der jeweilige Key angesprochen
for(keys[index] in para){
//Mit para[keys[index]] somit ein Objektinhalt
document.write("Key = " + keys[index] + " - Wert = " + para[keys[index]] + "<br>");
index++;
}
return true;
}
// -->
</script>
</head>
<body>
<?php
$array1 = array("wert1","wert2","wert3");
$array2 = array("cat" => "wert1", "field" => "wert2", "attr1" => "wert3");
?>
<script type="text/javascript">
<!--
test1(<?php echo json_encode($array1);?>);
test2(<?php echo json_encode($array2);?>);
// -->
</script>
</body>
</html>
Vielleicht kannst du das ja gebrauchen.
Gruß
Günni
siehe meine Frage vom 23.02.2010:
Variable Namen für Eigenschaften eines Objektes
Variable Namen für Eigenschaften eines Objektes
$.each(attrArray, function(key, value) {
attrObj[key] = value;
});
Zitat von @nxclass:
siehe meine Frage vom 23.02.2010:
Variable Namen für Eigenschaften eines Objektes
siehe meine Frage vom 23.02.2010:
Variable Namen für Eigenschaften eines Objektes
> $.each(attrArray, function(key, value) {
> attrObj[key] = value;
> });
>
Was soll mir das jetzt sagen? Dass du in JavaScript ein Objekt erzeugen kannst?
Wo soll denn hier das variable sein, wenn ich die Eigenschaften(keys) festlege?
Genauso könnt' ich sowas benutzen:
<script type="text/javascript">
<!--
function myObject(cat, field, attr1){
this.cat = cat;
this.field = field;
this.attr1 = attr1;
}
var obj1 = new myObject("Kategorie","Feld","Attribut");
// -->
</script>
. . .
<body>
<script type="text/javascript">
<!--
document.write(obj1.cat + "<br>");
obj1.cat = "Neue Kategorie";
document.write(obj1.cat);
// -->
</script>
. . .
</body>
Naja,ottscho wollte ja PHP-Daten als dynamisches Array übergeben. PHP seh' ich hier eh nicht, und wenn das Anliegen so gelöst ist . . .
Gruß
Günni
Was soll mir das jetzt sagen? Dass du in JavaScript ein Objekt erzeugen kannst?
... Moment - also ich hatte dem TO geantwortet auf seine Frage:Frage ist dann nur, wie mache ich den Wert nach dem . Variable:
wollte ja PHP-Daten als dynamisches Array übergeben
Dein Beispiel ist auch valide - nur habe ich dazu nichts gesagt, da der TO soweit ich das verstanden habe nur JS variablen an ein PHP Script senden wollte.Zitat von @nxclass:
> Was soll mir das jetzt sagen? Dass du in JavaScript ein Objekt erzeugen kannst?
... Moment - also ich hatte dem TO geantwortet auf seine Frage:
> Frage ist dann nur, wie mache ich den Wert nach dem . Variable:
> wollte ja PHP-Daten als dynamisches Array übergeben
Dein Beispiel ist auch valide - nur habe ich dazu nichts gesagt, da der TO soweit ich das verstanden habe nur JS variablen an ein
PHP Script senden wollte.
> Was soll mir das jetzt sagen? Dass du in JavaScript ein Objekt erzeugen kannst?
... Moment - also ich hatte dem TO geantwortet auf seine Frage:
> Frage ist dann nur, wie mache ich den Wert nach dem . Variable:
> wollte ja PHP-Daten als dynamisches Array übergeben
Dein Beispiel ist auch valide - nur habe ich dazu nichts gesagt, da der TO soweit ich das verstanden habe nur JS variablen an ein
PHP Script senden wollte.
Sorry nxClass,
hatte ich nicht gesehen, dass du dem TO geantwortet hast.
Gruss
Günni
PS.: Kleine Anrede würde abhelfen, um Missverständnisse zu vermeiden.
Der Diskussionsverlauf ist manchmal etwas missverständlich (mir zumindest).