Ajax allant à

J’essaie juste de faire une requête simple comme celle-ci:

$('.asd').change( function () { $.ajax({ url: 'http://127.0.0.1/folder/index.php/controller/action/integer', success: function(data){} }); } ); 

Ce code tente d’aller à http://127.0.0.1/folder/index.php/controller/[object%20Object] à la place et obtient un 404. D’où tire-t-il l’object? J’utilise une simple ficelle.

Pour moi, le problème était que j’utilisais $.post au lieu de $.ajax .

 // fails: $.post({ url: "/example/" + this.id, // ... }); // works: $.ajax({ url: "/example/" + this.id, // ... }); 

ajax attend une carte de parameters. post attend un seul paramètre:

 // fails: $.post({ url: "/example/" + this.id, // ... }); // works: $.post("/example/" + this.id); 

J’ai eu le même problème et creusé partout à la recherche d’une réponse. Malheureusement, ce consortingbuteur n’est jamais revenu avec un. La mienne était une erreur stupide. De retour d’Ajax, j’ai utilisé par inadvertance le nom de ma variable d’après un mot réservé. Voici ce que j’ai eu:

 $.post('/MyApp.php', { param: 'getLocation' }, function(xml) { location=$(xml).find('Location'); } }); 

Codé comme ceci, au retour de Ajax, la page est redirigée vers http: // myurl / [Object% 20object], ce qui est parfaitement logique maintenant.

Résolution: remplacez “emplacement = $ …” par “clocation = $ …”. J’espère que cette réponse aidera quelqu’un d’autre. C’est un problème difficile à déboguer.

Pour moi, travailler dans Play et utiliser jsRoutes ont été très pénibles à comprendre.

Il semble que Play (javaScript) effectue un Ajax GET sans problème en utilisant la syntaxe suivante:

 $.ajax(jsRoutes.controllers.MyController.ajax(inurlparam)) .done(function(data) { }).fail(function(data) { }) 

Cependant (et voici la partie méchante) … Si vous souhaitez faire un post, vous devez d’abord utiliser la méthode absolutURL() sur l’URL pour obtenir le ajax (ou post) de ne pas inclure un [object%20Object] l’URL au moment de poster. Aucune quantité de débogage de l’URL ou des parameters de formulaire n’a semblé indiquer ce qui se passait ni pourquoi. Je viens littéralement de “deviner” cette solution par pure frustration. PS: Notez les crochets à la fin de absolutURL() – js les gens vont instantanément avoir ces moyens “faire” la fonction pas seulement me passer la poignée.

  var url = jsRoutes.controllers.MyController.ajaxPost(inurlparam).absoluteURL(); var formData = $('#form').serialize(); $.ajax({ url: url, type: "POST", data: formData }).done(function(data) { }).fail(function(data) { }) 

Je réponds à cela ici car c’est là que Google m’a conduit une fois que j’ai finalement réalisé que ce n’était peut-être pas mon code qui causait le problème 🙂