2015-11-23 4 views
0

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

$('.dup-product').click(function(){  
    var owners = $(".total_product_owner").val(); 
     $(".getmailfields").empty(); 
     if(owners == 0){ 
      $(".getmailfields").empty(); 
     } else { 
      for (i = 1; i <= owners; i++) {   
       $(".getmailfields").append("<div class='form-group email_forms'><label class='control-label col-sm-2' for=invite-"+i+">Member "+i+" email</label><div class='albox col-sm-10'><input type='email' class='form-control' name='invitefriends[]' placeholder='[email protected]' required></div></div>"); 
      } 
     } 
}); 

ниже кода действие от модального всплывающего окна

$('.duplicate_product').click(function(){ 
    var prodid = $(this).attr('pid'); 
    var userid = $(this).attr('oid'); 
    $.ajax({ 
     type : "post", 
     url : "user.php", 
     data: { 
       product_id: prodid, 
       user_id: userid, 
      }, 
     cache:false, 
     success : function(html){ 
       location.reload(); 
      } 
     }); 
}); 

, когда я ударил представить из всплывающих данных становятся добавлено дважды database.how я могу решить это?

PHP:

<?php 
$pid = $_POST['product_id']; 
$uid = $_POST['user_id']; 

if (isset($pid) && !empty($uid)){ 
    duplicate($pid,$uid); 
} else { 
    echo "Are you trying to do something nasty??"; 
} 

duplicate($pid,$uid){ 
echo "Duplicated"; 
} 

?> 
+0

Можете ли вы поместить свой php-код? –

+0

Возможно, вы отправляете форму одновременно. –

+0

Показать свою разметку HTML также может быть ваша форма также представляет. – Manwal

ответ

0

Там может быть любой из ниже ситуаций

  1. Есть два элемента с классом дубликата продукта. Если в этом случае используется идентификатор для привязки события щелчка

    $('#duplicate_product').click(function(){ 
    var prodid = $(this).attr('pid'); 
    var userid = $(this).attr('oid'); 
    $.ajax({ 
        type : "post", 
        url : "user.php", 
        data: { 
          product_id: prodid, 
          user_id: userid, 
         }, 
        cache:false, 
        success : function(html){ 
          location.reload(); 
         } 
        }); 
    

    });

Затем положить id="duplicate_product" на кнопку 2. Событие привязанный к кнопке снова и снова. в таком случае использование под кодом

$('.duplicate_product').unbind('click').bind('click', function(){ 
var prodid = $(this).attr('pid'); 
var userid = $(this).attr('oid'); 
$.ajax({ 
    type : "post", 
    url : "user.php", 
    data: { 
      product_id: prodid, 
      user_id: userid, 
     }, 
    cache:false, 
    success : function(html){ 
      location.reload(); 
     } 
    }); 

});

Смежные вопросы