私はwebshopを構築しています。すべてのアイテムにショッピングカートにそのアイテムを追加するボタンがあります。
<?php
$i = 0;
$path = "../images/women/winter/winter1";
$lang = "description_".get_param();
if(!$result = $db->query("SELECT * FROM cloths;")){
die("There was an error running the query [".$db->error."]");
}
while($winter = $result->fetch_assoc()){
echo "<div class = \"boxsale $winter[image]\">
<img src = \"$path.jpg\"/>
<div class = \"test\"> $winter[$lang] </div>
<select>
<option>S</option>
<option>M</option>
<option>L</option>
<option>XL</option>
<option>XXL</option>
</select>
<button class = \"addToCart\" onclick = \"executeJS()\"> <i class = \"fa fa-shopping-cart\" data-id = \"$i\" aria-hidden=\"true\"></i></button>
</div>";
$i++;
}?>
</div>
ボタンをクリックすると、最後の数行のexecuteJS()が別のファイルから呼び出されます。
addToCart.js
function executeJS(){
var id = $(this).attr("data-id");
$.ajax({
type: "GET",
url: "ajax.php?id=" + id + "&action=add"
})
.done(function(){
alert("Product has been added.");
});
}
iは
$(this).attr("data-id");
で、クリックされたボタンからのデータ-IDを取得したかったが、私が得るすべては未定義を持っているヘッダでありますデータIDとして。
id=undefined&action=add
誰でも正しい方向に向けることができますか? $(this)
が正しくアクセスしようとしている要素に適用されていないので、
おかげ
これはあなたのPHPとは関係ありません。 *レンダリング* HTMLを含めて、[mcve]を投稿してください。また、あなたのボタンにはデータ属性はありませんが、そのフォントの「」子どもは – j08691
と入力してください。バニラJavaScript表記 'this.dataset.id' – dsomel21
インラインイベントを使用すると' this'は'window'オブジェクトです。 – epascarello