Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX表单发送,但PHP脚本不起作用_Php_Jquery_Ajax - Fatal编程技术网

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>