【发布时间】:2018-10-14 19:37:52
【问题描述】:
我是使用 javascript 和 ajax 的绝对初学者,这就是我现在陷入困境的原因。我有一个 while 循环,其中有 2 个不同的按钮。正如我想象的那样,两者都有效,除了一件小事......
product-id 始终只传递给第一个元素,或者如果我为最后一个元素更改它。
如何将正确的产品 ID 传递给脚本?
这是我的 PHP 文件:
<?php while ( $product = $browse->fetch( PDO::FETCH_ASSOC ) ) :
$postid = $product[ 'id' ];
$userid = 1; ?>
<div id="content_<?php echo $postid ?>">
<div id="reload_<?php echo $postid ?>" class="row postfarbe browse">
<form method='post' action="" onsubmit="return add();">
<input type="hidden" id="userid" value="<?php echo $userid ?>" class="input-box">
<input type="hidden" id="productid" value="<?php echo $postid ?>" class="input-box">
<input type="hidden" id="collection" value="1" class="input-box">
<input type="hidden" id="wish" value="0" class="input-box">
<input type="submit" id="submit" value="Add to Collection" class="btn my-2 my-sm-0 btn-outline-dark btn-sm">
</form>
</div>
</div>
<?php endwhile; ?>
我的 Javascript 是:
function add()
{
var userid = document.getElementById("userid").value;
var productid = document.getElementById("productid").value;
var collection = document.getElementById("collection").value;
var wishlist = document.getElementById("wish").value;
if(userid && productid && collection && wishlist) {
$.ajax
({
type: 'post',
url: 'post_collection.php',
data: {
user_id:userid,
product_id:productid,
collection_id:collection,
wishlist_id:wishlist
},
success: function (response) {
$("#content_"+ productid).load(" #reload_" + productid);
}
});
}
return false;
}
</script>
我知道我的示例中的产品 ID 始终相同,但是如果循环中有 10 个或更多条目,我如何将正确的 ID 传递给脚本?
【问题讨论】:
-
id 必须是唯一的。现在您有几个 id 为“productid”的元素。您可以将计数器添加到 id ("productid2") 并将其添加到函数调用
onsubmit="return add(2);">;其中 '2' 将是一个计数器/索引。 -
更好的方法是在
form.submit上设置一个事件处理程序,然后使用传入的元素(表单)来获取子元素及其值。
标签: javascript php jquery html ajax