J'utilise Ajax sur un formulaire Knockout.js pour poster des informations que CakePHP devrait recevoir, cependant, le gâteau ne semble rien trouver. En outre, l'alerte n'apparaît pas malgré un statut de 200 (OK) à partir du message.
Voici l'AJAX P>
$.post("/orders/finalize_payment",{"customer_id":customer_id},function(data){ alert('success'); });
6 Réponses :
Question joliment formatée :) p>
Je suis à peu près sûr que j'ai la réponse, bien que je puisse me tromper ... Fondamentalement, Les données que vous envoyez à Cake vont directement dans l'objet (si cela est même possible), pas dans le tableau CODE> DATA CODE>. C'est pourquoi lorsque le gâteau génère des formulaires à l'aide du HTMLhelper, les noms sont, par exemple Je pense que si vous mettez $ ceci-> demande code> est un objet dans le gâteau et
$ ceci-> Demande -> Data CODE> est une variable / matrice qui est une propriété de l'objet. P>
data [utilisateur] [nom d'utilisateur] code>. P>.
json.stringify ({"client": client_id}) code> dans un
"DATA" code> tableau et envoyez cela, il devrait fonctionner. < / p>
Je ne sais pas si je comprends ce que vous entendez par «dans un tableau de données». Je l'ai changé à ce qui suit et rien n'a changé JSON.Stringify ({"Données": [{"Client": Customer_id}]})
Je pense que vous devez vous débarrasser de JSON.Stringifiez et passez l'objet, c'est-à-dire: Data: {"Client": Customer_ID} CODE> ou si cela ne fonctionne pas alors:
Données: { "Données": ["Client": Customer_id]} code>
Aucun de ceux qui ont travaillé. Sur une note latérale, j'ai changé $ ceci-> Demande-> Données à seulement $ Ceci-> Demande, et les données faisaient partie de ce tableau, et c'était vide. Aussi, nulle part, je n'ai rien vu de relatif aux valeurs que j'envoie.
Eh bien, j'ai fini par le changer vers JQuery's $ .post et cela a fonctionné. Je ne comprends pas pourquoi Ajax me donne un tel problème
Le code de la question n'apparaîtra dans aucun script PHP, la raison est la suivante: P>
contenttype: "JSON" P> blockQuote>
Ce n'est pas une demande codée de formulaire, donc par ex. Le code suivant: p>
xxx pré> va produire: p>
xxx pré> si vous souhaitez soumettre des données comme JSON, vous aurez besoin de Pour lire le corps de la demande brute: P>
$.ajax({ url: "/orders/finalize_payment", type: "POST", dataType: "json", // this is optional - indicates the expected response format data: {"customer": customer_id}, success: function(){ alert("success"); } });
regarder Cet article . Votre chaîne de données n'est probablement pas correcte. Par conséquent, CakePHP peut ne pas être capable de le mettre dans $ ceci-> Demande-> Data Code>. P>
L'utilisation de $ ceci-> Demande-> Data Code> Indique la version 2.x, qui gère l'absence de la clé de données de niveau supérieur. Il est toujours utile de savoir que cela peut parfois agir de manière inattendue - par ex. Si vous soumettez
{FOO: "bar", données: {Stuff: "zum"}} code>.
Comme vous utilisez CakePHP, vous trouverez peut-être ajouter DemandeHandler à vos composants résout le problème.
public $components = array([snip], 'RequestHandler');
Utilisation de données brutes et JSON Vous pouvez utiliser:
$this->MyModel->save($data).
utiliser print_r ($ ceci-> demande-> parames);