Requête AJAX post 4D Web

Salut tout le monde !

Je fais des tests pour prendre en main les fonctionnalités web de 4D
et je dois faire une requête AJAX à un endroit pour pouvoir
sauvegarder des entrées utilisateur.

Problème : Mes requêtes POST retournent toutes une erreur 404 alors
que ma méthode existe bien.

Je travail sur la v17 R5, voici le contenu de ma requête :

$.ajax({
url:"/4DACTION/TEST",
method:‘POST’,
data:{
ID:dataArray[0].value,
Champ_2:dataArray[1].value,
Champ_3:dataArray[2].value
},
success:console.log,
error:console.log
})

Et comment elle est traîtée dans 4D :

$tabChamps{1}:=“ID”
$tabChamps{2}:=“Champ_2”
$tabChamps{3}:=“Champ_3”
WEB LIRE ENTÊTE HTTP($tabChamps;$tabValeurs)
CHERCHER([Table_1];[Table_1]ID=$tabValeurs{1})
[Table_1]Champ_2:=$tabValeurs{2}
[Table_1]Champ_3:=$tabValeurs{3}
STOCKER ENREGISTREMENT([Table_1])

Merci d’avance ! :smiley:

Bonjour,

Le serveur web est-il démarré ?
La méthode est bien disponible via 4DACTION dans ses propriétés ?
Que se passe-t-il en mettant un point d’arrêt au début ?

WEB LIRE ENTÊTE HTTP ne s’utilise ni comme ça ni pour ça.
WEB LIRE VARIABLES devrait donner de meilleurs résultats.

Bonjour

Pour avoir pratiqué un peu ce genre de requêtes, le mieux est de ne PAS utiliser 4DACTION mais plutôt de tester les URL dans la méthode base “on web connection”.

exemple :

<code 4D>
$URL:=$1
C_TEXT($URL)
C_TEXT($Method)
C_TEXT($ParamText)

(…)

Case of

: ($URL="WebAjax_BuildTracks@")
	$Method:=Substring($URL;1;Position("/";$URL)-1)  //méthode 
	$ParamText:=Substring($URL;Position("/";$URL)+1)  // parametre 
	EXECUTE METHOD($Method;*;$ParamText)

(…)
End case

</code 4D>

Et avec des méthode appaellées se terminant par quelque chise comme

<code 4D>
WEB SEND TEXT($json;“text/json”)

</code 4D>

En espérant vous avoir aidé / inspiré !

Cordialement

Roland Lannuzel

Bonjour,

Le problème venait bien de la deuxième question posée. Merci beaucoup !

Bonjour, j’essaierais tout ça merci !