web-dev-qa-db-fra.com

L'utilisation d'Ajax dans jQuery ne fonctionne pas dans un widget

Je suis donc en train de créer un nouveau widget de conversion et j'ai quelques difficultés à faire en sorte que l'appel Ajax fonctionne dans mon widget. (fonctionne parfaitement en dehors de WordPress).

Le problème à l'heure actuelle, c'est que la totalité de la page d'accueil est affichée dans la division #results plutôt que simplement le résultat:

1
Danny

Si votre AJAX URL est conversion.php, il sera probablement dirigé vers votredomaine.com/conversion.php. Votre fichier est-il à cet endroit?

On dirait que non, et je suppose que vous n'avez pas 404.php, et dans ce cas, votre demande est dirigée vers votre index.php, c'est pourquoi vous obtenez le contenu de votre page d'accueil.

Si votre fichier se trouve dans votre dossier de thème, vous devrez modifier l'URL en wp-content/themes/yourtheme/conversion.php.

Mais le plus simple et recommandé consiste à utiliser WP intégré _ AJAX fonctionnalité: Voir cette page de codex pour plus d'informations: http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)

EDIT: La plupart des publications sur ce sujet sont destinées à AJAX sur le backend de WordPress, mais il est également possible de l’utiliser sur le front-end.

4
ungestaltbar

Je suis désolé, mais certains commentaires de ungestaltbar ne sont pas tout à fait corrects.

Je ne peux plus commenter ci-dessus, mais c'est presque une réponse.

Lorsque vous utilisez admin-ajax.php pour le front-end ...

Il faut accrocher les deux, wp_ajax_ (action) et wp_ajax_nopriv_ (action) sur le serveur AND ET, sinon cela ne fonctionnera pas.

La raison pour laquelle vous obtenez la page entière renvoyée peut être que l'appel XHR est intercepté par des règles de réécriture - WP est un point d'accès unique à l'application.

La syntaxe est à peu près comme ça:

add_action('wp_ajax_nopriv_conversion', array(&$this, 'do_conversion'));
add_action('wp_ajax_conversion', array(&$this, 'do_conversion'));

Cela peut sembler pas trop logique, mais je suis assez sûr avec cela (récemment utilisé dans un projet).

2
Martin Zeitler