将数组从jQuery传递到PHP(并在提交后实际转到页面)

将数组从jQuery传递到PHP(并在提交后实际转到页面),php,jquery,arrays,Php,Jquery,Arrays,这看起来很简单,但我所做的是在jQuery中创建一个数组,并通过ajax将其发送到php,然后将记录插入数据库。但是我现在想做的是创建完全相同的数组,但是我想转到php页面并查看它收到的内容,而不是ajax 我该怎么做呢 我正在使用这个jQuery: $('#preview').live('click',function(){ var postData = {}; $('#items tr').not(':fir

这看起来很简单,但我所做的是在jQuery中创建一个数组,并通过ajax将其发送到php,然后将记录插入数据库。但是我现在想做的是创建完全相同的数组,但是我想转到php页面并查看它收到的内容,而不是ajax

我该怎么做呢

我正在使用这个jQuery:

$('#preview').live('click',function(){ 

                    var postData = {};
                    $('#items tr').not(':first').each(function(index, value) {
                        var keyPrefix = 'data[' + index + ']';
                        postData[keyPrefix + '[index]'] = index;
                        postData[keyPrefix + '[supp_short_code]'] = $(this).closest('tr').find('.supp_short_code').text();
                        postData[keyPrefix + '[project_ref]'] = $(this).closest('tr').find('.project_ref').text();
                        postData[keyPrefix + '[om_part_no]'] = $(this).closest('tr').find('.om_part_no').text();
                        postData[keyPrefix + '[description]'] = $(this).closest('tr').find('.description').text();
                        postData[keyPrefix + '[quantity_input]'] = $(this).closest('tr').find('.quantity_input').val();
                        postData[keyPrefix + '[cost_of_items]'] = $(this).closest('tr').find('.cost_of_items').text();
                        postData[keyPrefix + '[cost_total_td]'] = $(this).closest('tr').find('.cost_total_td').text();
                    });

                $.ajax
                    ({
                    type: "POST",
                    url: "preview.php",
                    dataType: "json",
                    data: postData,
                    cache: false,
                    success: function()
                        {
                        }
                    });

            });
这个PHP:

if (isset($_POST['data']) && is_array($_POST['data'])) {
                foreach ($_POST['data'] as $row => $data) {
                    echo $data['index'];
                    echo $data['project_ref'];
                    echo $data['supp_short_code'];
                    echo $data['om_part_no'];
                    echo $data['description']; 
                    echo $data['quantity_input']; 
                    echo $data['cost_of_items']; 
                    echo $data['cost_total_td'];
                }
            }
为什么不使用JSON呢

为什么不使用JSON


您可以在会话中存储接收到的数据:

if (isset($_POST['data']) && is_array($_POST['data'])) {
  session_start();
  $_SESSION['data'] = $_POST['data'];
}
然后链接到另一个PHP页面,该页面从会话检索数据并显示:

session_start();
if (isset($_SESSION['data']) && is_array($_SESSION['data'])) {
                foreach ($_SESSION['data'] as $row => $data) {
                    echo $data['index'];
                    echo $data['project_ref'];
                    echo $data['supp_short_code'];
                    echo $data['om_part_no'];
                    echo $data['description']; 
                    echo $data['quantity_input']; 
                    echo $data['cost_of_items']; 
                    echo $data['cost_total_td'];
                }
            }

您可以在会话中存储接收到的数据:

if (isset($_POST['data']) && is_array($_POST['data'])) {
  session_start();
  $_SESSION['data'] = $_POST['data'];
}
然后链接到另一个PHP页面,该页面从会话检索数据并显示:

session_start();
if (isset($_SESSION['data']) && is_array($_SESSION['data'])) {
                foreach ($_SESSION['data'] as $row => $data) {
                    echo $data['index'];
                    echo $data['project_ref'];
                    echo $data['supp_short_code'];
                    echo $data['om_part_no'];
                    echo $data['description']; 
                    echo $data['quantity_input']; 
                    echo $data['cost_of_items']; 
                    echo $data['cost_total_td'];
                }
            }

因此,您当前正在使用jQuery创建POST字符串,然后使用ajax将其发送到php脚本。现在您实际上想要直接发布到PHP。对吗

如果我没有弄错,有两种选择:

  • 实际上是从一个 用户填写
  • 有一个由
    标记和提交 按钮使用jQuery来创建和 当 用户点击提交按钮并 在执行提交操作之前 完成

  • 因此,您当前正在使用jQuery创建POST字符串,然后使用ajax将其发送到php脚本。现在您实际上想要直接发布到PHP。对吗

    如果我没有弄错,有两种选择:

  • 实际上是从一个 用户填写
  • 有一个由
    标记和提交 按钮使用jQuery来创建和 当 用户点击提交按钮并 在执行提交操作之前 完成

  • 根据dnagirl所说,您可以使用jQuery生成POST表单并提交它

    $('#preview').live('click',function(){ 
        var cForm = $('<form method="post">').attr('action', "preview.php");
        $('#items tr').not(':first').each(function(index, value) {
            var keyPrefix = 'data[' + index + ']';
    
            cForm.append($('<input type="hidden">').attr('name', keyPrefix + '[index]').val(index));
            cForm.append($('<input type="hidden">').attr('name', keyPrefix + '[supp_short_code]').val($(this).closest('tr').find('.supp_short_code').text());
            // etc
        });
    
        cForm.hide().append('body').submit();
        return false;
    });
    
    $(“#预览”).live('click',function(){
    var cForm=$('').attr('action','preview.php”);
    $('#items tr')。不是(':first')。每个(函数(索引,值){
    var keyPrefix='data['+index+']';
    cForm.append($('').attr('name',keyPrefix+'[index]')).val(index));
    cForm.append($('').attr('name',keyPrefix+'[supp_short_code]')).val($(this).closest('tr').find('.supp_short_code').text());
    //等
    });
    cForm.hide().append('body').submit();
    返回false;
    });
    

    在创建字符串中使用attr()而不是内联使用attr()的原因是为了避免转义问题,而且在我看来它看起来更干净。

    根据dnagirl的说法,您可以做的是使用jQuery生成POST表单并提交它

    $('#preview').live('click',function(){ 
        var cForm = $('<form method="post">').attr('action', "preview.php");
        $('#items tr').not(':first').each(function(index, value) {
            var keyPrefix = 'data[' + index + ']';
    
            cForm.append($('<input type="hidden">').attr('name', keyPrefix + '[index]').val(index));
            cForm.append($('<input type="hidden">').attr('name', keyPrefix + '[supp_short_code]').val($(this).closest('tr').find('.supp_short_code').text());
            // etc
        });
    
        cForm.hide().append('body').submit();
        return false;
    });
    
    $(“#预览”).live('click',function(){
    var cForm=$('').attr('action','preview.php”);
    $('#items tr')。不是(':first')。每个(函数(索引,值){
    var keyPrefix='data['+index+']';
    cForm.append($('').attr('name',keyPrefix+'[index]')).val(index));
    cForm.append($('').attr('name',keyPrefix+'[supp_short_code]')).val($(this).closest('tr').find('.supp_short_code').text());
    //等
    });
    cForm.hide().append('body').submit();
    返回false;
    });
    

    使用attr()的原因在创建字符串的地方而不是内联是为了避免转义的问题,在我看来它看起来更干净。

    你得到了什么?任何错误消息?你的问题是什么?抱歉,没有错误,但我要说的是,这是在使用ajax,我想做的是像一个超链接,并实际转到php页面。不仅仅是ge这不是一个ajax响应!你得到了什么?有错误消息吗?你有什么问题?对不起,没有错误,但我想说的是,这是在使用ajax,我想做的是像一个超链接,并实际转到php页面。不仅仅是得到一个ajax响应!这是正确的,也许我很幼稚,但我不能仅仅将postData粘贴到超链接或som中吗ething?可能吗?@benhowdle89:你可以将GET数据放在超链接中,而不是POST数据。如果你的字段仅用于提取数据,那么GET是一种合理的方式。但是如果你正在更改字段的内容(例如更新数据库),应该使用POST。没错,也许我太天真了,但我能不能不把postData放在超链接或其他地方?可能吗?@benhowdle89:你可以把GET数据放在超链接中,而不是POST数据。如果你的字段只用于拉取数据,那么GET是一种合理的方式。但是如果你正在用字段改变事情的话(例如更新数据库),应使用POST。