Senden Json an Webserver

Hallo,

ich habe eine Frage zur Kommunikation mit dem 4D Webserver. Irgendwie stehe ich auf der Leitung.

Ich möchte ein JSON Objekt an den Webserver senden ich mache das mit folgendem Code (laut http://kb.4d.com/assetid=77085)

function onStart(){
myObj = {
“name”:“John”,
“age”:30,
“cars”: {
“car1”:“Ford”,
“car2”:“BMW”,
“car3”:“Fiat”
}
}
$.ajax({
type: “POST”,
url: “http://127.0.0.1”,
contentType: ‘application/json; charset=utf-8’,
data: {jsonStr: JSON.stringify( myObj )},
dataType: ‘json’,
success: function(data_returned){
}
});
}

was muss ich nun in 4D machen, damit ich das Objekt bekomme? Mit WEB GET VARIABLES($anames;$avalues) bekomme ich ja nur Text Arrays
{“name”:“John”,“age”:30,“cars”:{“car1”:“Ford”,“car2”:“BMW”,“car3”:“Fiat”}}

Die Variable jsonStr bleibt mir undefined bzw. leer.

danke,
lg manfred

Ist das ein Typo, doppeltes Komma?
data: {jsonStr: JSON.stringify( myObj )},

Ist das nicht richtig?

: Manfred HOFMANN

{“name”:“John”,“age”:30,“cars”:{“car1”:“Ford”,“car2”:“BMW”,“car3”:"Fia
"}}

Ansonsten muss der http body geparst werden, weil es ein POST request ist:
<code 4D>
WEB GET HTTP BODY($searchPtr->)

C_OBJECT($resultObj)
If (Length($searchPtr->)>0)
$resultObj:=json_parse ($searchPtr->)
End if

</code 4D>

oops sorry, ist natürlich nur ein komma.

grundsätzlich ist der string richtig, aber laut dem technote http://kb.4d.com/assetid=77085 hab ich das so verstanden, dass 4D die variable jsonstr autom als object zuweist

[]20646528;“Your comment here…”[/]

Naja, es gibt noch die Technik in Compiler_Web die entsprechenden Prozess-Variablen zu deklarieren und dann 4D die Zuweisung erledigen zu lassen. Das haben wir bei uns nicht so implementiert, da der generische Web-Code noch aus Vor-Object-Zeiten stammt.
Klarer wäre es gewesen, wenn im erwähnten Tech-Tipp ein 4D-Code-Snippet zu sehen wäre.

Aber mit WEB GET VARIABLES bekomme ich nur Texte, JSON Parse muss ich schon selber machen. Interessant wäre mal zu testen, wenn man folgendes macht in Compiler_Web:
<code 4D>
C_OBJECT(jsonStr)
</code 4D>
Ob dann die Zuweisung verfolgt, auch ohne WEB GET VARIABLES? Aber das haben wir (bisher) nie benutzt.
Auch um den früher inflationären Gebrauch von (globalen) Prozessvariablen einzudämmen.

automatische Zuweisung an Variablen halte ich persönlich für gefährlich, d.h. potentielles Sicherheitsrisiko…

wenn bei POST, also im Body, ein “großes” Json Objekt übergeben wird, würde ich dies über WEB GET BODY auslesen.
Dann kann man den Inhalt parsen, das könnte ein Json Objekt als Container für ein Json Array sein, es könnte direkt das Array sein, es könnte irgendwas anderes sein, macht man das selbst, kann man das mit einigen wenigen Befehlen leicht parsen, bzw prüfen.

Befehle wie JSON Valdiate helfen dabei:
http://blog.4d.com/validate-your-json-object/

ah JSON Valdate kannte ich noch nicht. Vielen Dank,