2016-01-03 2 views
3

Следующий код дает одинаковый идентификатор продукта по каждому запросу . В чем проблема.Каждый запрос ajax дает данные в ответе

Это код формы, связанный с каждым продуктом.

<form action="" method="" id="formproduct"> 
    <input type="hidden" name="id" class="productid" 
    value="<?php echo $row['Product-id'];?>" > 
    <button name="submit" class="btn">Add To Cart</button> 
     </form> 

Это код запроса ajax.

var formData = { 
     'product': jQuery(".productid").attr("value") 
    }; 

jQuery.ajax({ 
      type: "POST", 
      url: "server-cart.php",///contain the url of ajax 
      data:formData, 
      dataType:"json", 

Здесь я получаю идентификатор из запроса.

$id=$_REQUEST["product"]; 
+0

Не было бы безопаснее получить доступ к вашему значению поля ввода по id? $ ("# ID"). Атр ("значение")? – Alexei

+0

Почему вы хотите различный идентификатор продукта? вы должны «очистить» данные, если сохраненный успех полностью. Используйте '$ (" # productid "). Val (" ");' на каждом 'ajax'' успехе' сохранены. ваше скрытое поле всегда присутствовало, не выяснилось на следующем 'save'. –

+0

Я пытаюсь добиться того, что при каждом успехе ajax мой идентификатор продукта добавляется в переменную session declare. –

ответ

1

Так что я предполагаю, что у вас есть несколько форм на странице с рядом различных продуктов. Вы должны переписать свой сценарий в зависимости от правильной формы:

$("form").on("click", "button[name=submit]", function(){ 

    var form = $(this).closest("form"); // find the form to relate to 
    var data = { product: $(".productid", form).val() }; // here we fetch product id from the input inside the form 

    // do ajax-request 
    // ... 

    return false; 
}); 
2

.attr() возвращает оригинальный value набор на html, .val() возвращает текущие value из input элемента. Попробуйте заменить .val() для .attr() используйте .change() для получения тока value из input элемента

$("input").change(function() { 
 
    // `$(this).attr("value")` : `123` : original `value` set at `input` 
 
    // `$(this).val()` : current `value` of `input` element 
 
    console.log($(this).val(), $(this).attr("value")) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<input value="123" />

1

Вы должны любить

здесь вы многообразные формы я думаю

<form action="" method="" id="formproduct"> 
    <input type="hidden" name="id" class="productid" 
    value="<?php echo $row['Product-id'];?>" > 
    <button name="submit" class="btn" onclick="saveProduct(this)">Add To Cart</button> 
     </form> 

JQuery

function saveProduct(thisObj){ 
      //here we find productid value of current row 
      var formData = { 
        'product': jQuery(thisObj).closest(".productid").val(); 
       }; 

      jQuery.ajax({ 
      type: "POST", 
      url: "server-cart.php",///contain the url of ajax 
      data:formData, 
      dataType:"json", 
      success:function(data){ 
      } 
      }); 
} 
Смежные вопросы