Im kiểu mới với jquery và ajax và tôi tự hỏi liệu có ai đó có thể giúp tôi không?Không thể gửi nút bên phải cho từng trường nhập [nhiều nút và trường nhập trong một biểu mẫu]
Tôi có vòng lặp foreach php in ra một loại đầu vào = số và một nút. Đoạn mã dưới đây, tạo một bảng với mỗi hàng hiển thị tên mục, một hộp để người dùng nhập số lượng và nút để bán sản phẩm.
<div class=verktyg>
<form action='sell_items.php' method='POST' id='ajax'>
<table class="inventory">
<?php
foreach (array_slice($items, 2) as $key => $value) {
if($value>0){
echo "<tr>
<td id='verktyg-first-td'>".$key."</td>
<td>".$value."</td>
<td><input type='number' name='items[$key]' value='0'></td>
<td><button type='submit' name='item' value='$key'>sell</button></td>
</tr>";
}
}
?>
</table>
</form>
</div>
Và đây là mã jquery/ajax của tôi:
$(document).on('submit','form#ajax', function(){
var that = $(this);
url = that.attr('action');
type = that.attr('method');
data = {};
that.find('[name]').each(function(index, value){
var that = $(this);
name = that.attr('name');
value = that.val();
data[name] = value;
});
$.ajax({
url: url,
type: type,
data: data,
success: function(response) {
console.log(response);
}
});
return false;
});
Bây giờ đến vấn đề này. Khi tôi cố gắng bán 2 đơn vị của vật phẩm đầu tiên (trong hàng đầu tiên), hình thức của tôi nghĩ rằng im nộp trường nhập cuối cùng (ở hàng cuối cùng), khi im không ..
Đây là những gì tôi nhận được trong bảng điều khiển trình duyệt khi tôi cố gắng để bán 2 đơn vị thuộc mục đầu tiên:
console.log (phản ứng): See my ajax response in console when i click sell item in the first row
console.log (dữ liệu): See my ajax data in console when i click sell item in the first row
tôi đã cố gắng để bắt đầu script js của tôi với:
$('form#ajax').on('submit', function(){
thay vì
$(document).on('submit','form#ajax', function(){
Nhưng nó đã không làm việc .. Bất cứ ý tưởng?
EDIT: tôi có thể tiếp cận vấn đề này một cách sai lầm .. Bây giờ im suy nghĩ có lẽ tôi nên tìm ra nút nào được nhấn và sau đó nhận giá trị các yếu tố trước bằng cách viết một cái gì đó như thế này:
var btn= $(this).find("button[type=submit]:focus").val();
var quantity = $(btn).prev("input[type=number]").val();
console.log(btn);
console.log(quantity);
Nhưng vẫn còn, số lượng của tôi không được xác định. Cần phải tìm một cách để có được giá trị mà ...
Cảm ơn trước
Cảm ơn rất nhiều sự giúp đỡ, nó dường như là chính xác những gì tôi cần. Tuy nhiên, vấn đề duy nhất bây giờ là câu lệnh php của tôi: if (isset ($ _ POST ['item'])) dosent phát hiện nút bấm và nói "Undefined index: item" –
@DavidMozartAndraws Cập nhật câu trả lời của tôi, kiểm tra nó ra –
như một sự quyến rũ ngay bây giờ! Thực sự đánh giá cao nó! –