AJAX表单发送,但PHP脚本不起作用
我得到了一个表单,可以循环浏览我数据库中的一些产品:AJAX表单发送,但PHP脚本不起作用,php,jquery,ajax,Php,Jquery,Ajax,我得到了一个表单,可以循环浏览我数据库中的一些产品: <?php $sql = "SELECT * FROM products WHERE top = 'yes' and everything = 'true'"; $featured = mysqli_query($conn,$sql); ?> <?php while ($product = mysqli_fetch_assoc($featured)): ?> <form class="myf
<?php
$sql = "SELECT * FROM products WHERE top = 'yes' and everything = 'true'";
$featured = mysqli_query($conn,$sql);
?>
<?php while ($product = mysqli_fetch_assoc($featured)): ?>
<form class="myform" method="POST" class="ajax">
<input type="hidden" name="ID" value="<?=$product['id'];?>">
<input type="hidden" name="salec" value="<?=$product['sale'];?>">
<input type="hidden" name="hidden_name" value="<?=$product['title'];?>">
<input type="hidden" name="hidden_price" class="hidden_price" value="<?=$product['price'];?>">
<input type="hidden" name="hidden_list_price" class="hidden_list_price" value="<?=$product['list_price'];?>">
<input type="hidden" name="collect" class="collect" value="<?=$product['collection'];?>">
<input type="hidden" name="himg" class="himg" value="<?=$product['image'];?>">
<select name="quantity" class="quantity">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<input type="submit" class="button" name="cartbtn" value="Quick Add-to-Cart">
</form>
<?php endwhile ?>
这只是一个测试,看看它是否真的有效。警报触发正常,但回声未显示 这是因为您试图验证序列化表单传递的提交后按钮 Ajax post serialize()不包括按钮名称和值。它们不被视为“成功的控件”。这是因为serialize()方法无法知道单击了哪个按钮 解决方案#1:尝试将您的
PHP_脚本/quick_cart.PHP
替换为
if (!empty($_POST)){
echo "hello";
}
这是为了检查是否有post
操作
解决方案#2:
如果仍然希望验证按钮,则应在传递到ajax之前将其连接到序列化数据中
编辑您的javascript:
<script type="text/javascript">
$('.myform').on('submit', function (e) {
e.preventDefault();
var myform=$('.myform').serialize();
var curSubmit = $("input[type=submit]",this);
var myform = myform
+ '&'
+ encodeURI(curSubmit.attr('name'))
+ '='
+ encodeURI(curSubmit.attr('value'))
;
$.ajax({
type: 'post',
url: '../PHP_Scripts/quick_cart.php',
data: myform,
success: function () {
alert('form was submitted');
}
});
});
</script>
$('.myform')。关于('submit',函数(e){
e、 预防默认值();
var myform=$('.myform').serialize();
var curSubmit=$(“输入[type=submit]”,this);
var myform=myform
+ '&'
+encodeURI(curSubmit.attr('name'))
+ '='
+encodeURI(curSubmit.attr('value'))
;
$.ajax({
键入:“post”,
url:“../PHP\u Scripts/quick\u cart.PHP”,
资料来源:myform,
成功:函数(){
警报(“表格已提交”);
}
});
});
出现问题的原因是您的表单中有两个类class=“myform”method=“POST”class=“ajax”
用
替换
,仅供参考,您缺少一个
<代码>结束,而
缺少一个
@MA我已经纠正了这些错误,谢谢你向我指出它们。然而,它仍然不起作用。有什么想法吗?你没有提供足够的信息。看看控制台。post错误,http响应代码。$\u POST包含什么内容?如果您没有捕获ajax响应,您希望在哪里看到“hello”?是否启用了php短标记?这应该是可以接受的答案@Doe还应该注意,他的循环产品将输出多个,这意味着他用于序列化的jQuery选择器可能不会选择正确的产品。
if (!empty($_POST)){
echo "hello";
}
<script type="text/javascript">
$('.myform').on('submit', function (e) {
e.preventDefault();
var myform=$('.myform').serialize();
var curSubmit = $("input[type=submit]",this);
var myform = myform
+ '&'
+ encodeURI(curSubmit.attr('name'))
+ '='
+ encodeURI(curSubmit.attr('value'))
;
$.ajax({
type: 'post',
url: '../PHP_Scripts/quick_cart.php',
data: myform,
success: function () {
alert('form was submitted');
}
});
});
</script>