Intereting Posts

Сообщение не будет загружаться через ajax

Я унаследовал сайт WP 3.2.1, который использует prettyPhoto для загрузки контента через ajax. Это работало до того, как я включил постоянные ссылки на сайт. Установлен пользовательский плагин пользовательского типа ввода. Я могу перейти к своему пользовательскому типу сообщений в mysite.com/story/name-of-story, но загрузка через ajax приводит к 404.

Ссылки, которые запускают код $ .get в prettyPhoto, выглядят следующим образом:

<a href="<?php echo get_permalink(); ?>&ajax=true&count=<?php echo $count ?>" rel="story[ajax]"><?php echo wp_get_attachment_image($attachment->ID, array(75, 75));?></a> 

Если я изменил параметры постоянной ссылки на «по умолчанию». содержимое сообщения загружается в всплывающее окно. Hrefs, вызываемый через XHR, когда он работает, выглядит так:

http://mysite.com/?story=name-of-story&ajax=true&count=37

Я попытался удалить все параметры запроса из URL-адресов постоянной ссылки, и это не решило проблему. Может ли кто-нибудь проливать свет на то, что может происходить здесь?

Solutions Collecting From Web of "Сообщение не будет загружаться через ajax"

Все запросы ajax должны направляться через удобный файл /wp-admin/admin-ajax.php .

Он работает с большой системой крючков WP. Таким образом, вы отправляете «действие» с вашим запросом и используете это как часть действия, в которое вы используете свою функцию.

Итак, предположим, что ваш вызов ajax выглядит так (с jQuery)

 jQuery('a.ajax').click(function(e){ data = { 'action': 'wpse31321_action', 'story': 1 // IDs are easier to deal with... } jQuery.get( 'http://www.yoursite.com/wp-admin/admin-ajax.php', data, function(resp){ // do stuff with the response. } ); e.preventDefault(); }); 

Затем в файле functions.php или плагине вам нужно подключиться к wp_ajax_wpse31321_action и wp_ajax_nopriv_wpse31321_action . Это та часть, которая выполняет эту работу: у вас есть доступ к полной WP api внутри вашей подключенной функции. Получать сообщения, что угодно.

wp_ajax_[some_action] для зарегистрированных пользователей. wp_ajax_nopriv_[some_action] для всех остальных. [some_action] – это, конечно же, действие, которое вы отправляете вместе с вашим запросом. wpse31321_action в нашем примере.

 <?php add_action( 'wp_ajax_wpse31321_action', 'wpse31321_ajax' ); add_action( 'wp_ajax_nopriv_wpse31321_action', 'wpse31321_ajax' ); function wpse31321_ajax() { // you have access to $_REQUEST, $_POST and $_GET here... if( isset ( $_REQUEST['story'] ) ) { $story = get_post( (int) $_REQUEST['story'] ); if( ! $story ) die( '-1' ); echo $story->post_content; die(); // Always kill the script after echoing out what you need. } else { die( '-1' ); } } 

Вы можете делать все, что хотите, манипулировать данными, прежде чем повторять их. Вышеприведенное является очень упрощенным ответом, без большой проверки ошибок или встроенной безопасности. Но это должно заставить вас начать.

Дальнейшее чтение:

http://wpajax.com/

http://codex.wordpress.org/AJAX_in_Plugins

http://codex.wordpress.org/AJAX