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

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

我该怎么做呢?

我正在使用这个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']; } } 

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

 $('#preview').live('click',function(){ var cForm = $('
').attr('action', "preview.php"); $('#items tr').not(':first').each(function(index, value) { 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()); // etc }); cForm.hide().append('body').submit(); return false; });

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

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

 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']; } } 

为什么不使用JSON

PHP JSON

所以你当前正在使用jQuery创建一个POST字符串,然后使用ajax将其发送到php脚本。 现在你真的想直接POST到PHP。 那是对的吗?

如果我有这个权利,有两个选择:

  1. 实际上是从用户填写的表单中POST
  2. 具有由

    标签和提交按钮组成的骨架forms。 当用户点击提交按钮时以及提交操作完成之前,使用jQuery创建和填充隐藏的表单字段。