使用 JQuery 和 AJAX 将数据提交到另一个页面上的数组

Posted

技术标签:

【中文标题】使用 JQuery 和 AJAX 将数据提交到另一个页面上的数组【英文标题】:Submit data to an array on another page using JQuery and AJAX 【发布时间】:2019-01-12 09:04:17 【问题描述】:

我有这个表格。目前,它提交给我的cart.php

<form action="cart.php?ID=<?=$row['id'];?>&salec=<?=$row['sale'];?>" 
       method="POST">

   <input type="hidden" name="hidden_name" value="<?=$row['title'];?>">

   <input type="hidden" name="hidden_price" value="<?=$row['price'];?>">

   <input type="hidden" name="hidden_list_price" value="<? 
   =$row['list_price'];>">

   <input type="hidden" name="collect" value="<?=$row['collection'];?>">

      <h4>Quantity</h4>

   <input type="text" name="quantity" value="1" maxlength="1" 
    class="quantity">

   <input type="hidden" name="himg" value="<?=$row['image'];?>">

   <input type="submit" class="button" name="cartbtn" value="Add to Cart">
</form>

它提交给我在cart.php 中的这个数组:

$_SESSION['shoppingcart'] = array (

        'salec' => filter_input(INPUT_GET, 'salec'),
        'id' => filter_input(INPUT_GET, 'ID'),
        'name' => filter_input(INPUT_POST, 'hidden_name'),
        'list_price' => filter_input(INPUT_POST, 'hidden_list_price'),
        'price' => filter_input(INPUT_POST, 'hidden_price'),
        'quantity' => filter_input(INPUT_POST, 'quantity'),
        'collect' => filter_input(INPUT_POST, 'collect'),
        'img' => filter_input(INPUT_POST, 'himg')

);

这很好用。我需要将此form 数据提交给cart.php array,而不需要重定向(操作)。

我尝试了这个 jQuery 和 Ajax,但它不起作用。

$(document).ready(function()
    $("#myform").on('submit', function()
        var name = $("#hidden_name").val();
        var price = $("#hidden_price").val();
        var list_price = $("#hidden_list_price").val();
        var quantity = $("#quantity").val();
        var img = $("#himg").val();
        var collect = $("#collect").val();

 $.ajax(
            type: "POST",
            url: "cart.php",
            data: dataString,
            cache: false,
            success: function(result)
                alert(result);
            
 );

当我这样做时:

function pre_r($array)
    echo '<pre>';
        print_r($array);
    echo'</pre>';


pre_r($_SESSION) ;

它显示数据尚未添加到数组中。它不会重定向我——这是我想要的——但它也不会将信息添加到数组中。我做错了什么?

【问题讨论】:

你必须event.preventDefault()。现在您的表单正在提交,然后执行 ajax(可能不再,因为您已经在 ajax 之前“重定向”到 cart.php) 但是 datastring 没有在任何地方定义!? 【参考方案1】:

如果表单在没有 ajax 的情况下提交时可以正常工作,那么您还需要提交表单,因为它也在 Ajax 块中:

$("#myform").on('submit', function(e)
    var form = $(this);
    $.ajax(
        type: form.attr('method'),
        url:  form.attr('action'),
        data: form.serialize(),
        cache: false,
        success: function(result)
            alert(result);
        
    );
    e.preventDefault();
);

【讨论】:

确保您的表单 id="myform" 感谢您的回答,但不幸的是,这不起作用。我确保表格 id =“myform”。这成功地没有重定向我,但它也没有将表单数据添加到数组中。 @K.Doe 使用serialize() 将发送与原始提交过程完全相同的数据。检查浏览器开发工具网络中的请求以查看状态是否为 200 并查看发送的确切内容。你的警报也会触发吗? @charlietfl 嗨,代码是 200(ok)。它显示所有正确的表单数据,单击提交按钮时的查询参数。只是,出于某种原因,它不会将数据添加到数组中 @charlietfl 哦,是的,我也收到了警报【参考方案2】:

嗨,我会尽力帮助你。我会告诉你我是这个行业的新手,所以我还在学习 :) 但我将从: 1.使用类型按钮更改输入类型提交。 `` `$(document).ready(function()

$("#myform").click(function()
    var name = $("#hidden_name").val();
    var price = $("#hidden_price").val();
    var list_price = $("#hidden_list_price").val();
    var quantity = $("#quantity").val();
    var img = $("#himg").val();
    var collect = $("#collect").val();`

$.ajax(

        type: "POST",
        url: "cart.php",
        data: 
      name:name,
      price: price,
      list_price: list_price,
      quantity: quantity,
      img: img,
      collect: collect


     ,
        cache: false,
        success: function(result)
            alert(result);
        

);

查看控制台是否有错误希望这可以帮助你 ps如果你想用jquery发出一个post请求,你可以用一种简单的方式做到这一点 $.post( "cart.php", name:name, price: price, list_price: list_price, quantity: quantity, img: img, collect: collect );

【讨论】:

以上是关于使用 JQuery 和 AJAX 将数据提交到另一个页面上的数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 AJAX 和 jQuery 验证 From 而不将数据发送到另一个文件

JQuery中使用FormData异步提交数据和提交文件

使用 jQuery Ajax 将数据发布到另一个 php 文件 [重复]

jquery:怎么从一文本框获取值到另一文本框?如下图,下文本框输入值,点提交,则值提交到上文本框。

jQuery中FormData的使用

使用 jQuery 和 AJAX 提交表单如果 return 设置为 false 则不会将值插入 SQL 以防止重定向