richpedley
  • 0
Новичок

Формы jQuery и информация об обновлении

  • 0

Я пытаюсь добавить ajax в существующий скрипт, все идет хорошо для первой отправки, но последующие не работают должным образом.

add_action('wp_head', 'my_special_action_javascript');
add_action('wp_ajax_my_special_action', 'my_special_action_callback');
add_action('wp_ajax_nopriv_my_special_action', 'my_special_action_callback');
add_action('wp_ajax_my_cart', 'my_cart_callback');
add_action('wp_ajax_nopriv_my_cart', 'my_cart_callback');

а до них у меня тоже естьwp_enqueue_script('jquery');

function my_special_action_javascript() {
?>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function() {
 jQuery(".addtocart").submit(function() {
  var data = {action: 'my_special_action',post:jQuery(this).serialize() };
  jQuery.post("<?php echo admin_url('admin-ajax.php'); ?>", data,
  function(response){
   jQuery(".eshopajax").replaceWith(response);
  });
  function upCart(){
   var tdata = {action: 'my_cart'};
   jQuery.post("<?php echo admin_url('admin-ajax.php'); ?>", tdata,
   function(response){
    jQuery(".ajaxcart").replaceWith(response);
   });
  }
  setTimeout (upCart,500);
  return false;
 });
});
//]]>

</script>
<?php
}

Примечания:

.addtocart — это класс формы (и будут случаи, когда на странице будет несколько форм).

.eshopax — это раздел в форме, где я отображаю ответ (хотя на самом деле я должен добавить это через сценарий тоже).

.ajaxcart — это корзина в виджетах, которую я пытаюсь автоматически обновить.

setTimeout — добавлено для замедления обновления корзины, чтобы позволить завершиться первому процессу.

Теперь, как объяснено выше, работает по назначению, один раз. Но когда я снова отправляю форму, даже с другими значениями отображение больше не меняется, но корзина обновляется (upCart), и текст ответа явно не добавляется. Кроме того, похоже, что он не распознает измененные данные формы.

Итак, как мне сбросить все, чтобы он распознавал возможные новые детали формы? Кроме того, я не думаю, что jQuery.post в функции upCart тоже правильный (но он работает…).

любая помощь приветствуется.

(первоначально вопрос был задан на форумах поддержки WordPress).

Share
  1. ааа нвм, разобрался:

    jQuery(document).ready(function($){
        $('.addtocart').submit(function(){
            var data = {action: 'my_special_action',post:$('.addtocart').serialize() };  
            $.post("<?php echo admin_url('admin-ajax.php'); ?>", data,
            function(response){
                $(".eshopajax").insertAfter(this).fadeIn(100).html(response).fadeOut(3000);
                setTimeout (clearCart,200); 
                setTimeout (doRequest,500);  
                setTimeout (clearRequest,3000);  
            });
            function doRequest(){
                var tdata = {action: 'my_cart'};
                $.post("<?php echo admin_url('admin-ajax.php'); ?>", tdata,
                function(response){
                    $(".ajaxcart").insertAfter(this).fadeIn(100).html(response);
                });
            }
            function clearRequest(){
                $(".eshopajax").empty();
            }
            function clearCart(){
                $(".ajaxcart").insert();
            }
            return false;
        });
    
    });
    
    • 0

Оставить ответ

You must login to add an answer.