重定向后需要将发布数据传递到新页面(使用iFrames)

时间:2013-04-19 21:09:20

标签: php ajax redirect

我现在处于一种棘手的情况,因为我的客户坚持保留iframe功能,现在想要一个页面,在提交信息后,在提交之前审查并查看所述信息,如果不对,请返回并重新 - 提交更改。

基本上,在你感到困惑之前,我只想使用表格的动作和帖子方法,使用按钮OUTSIDE iframe ......

我在iframe外部使用Codiqa的按钮来定位内部框架的js函数,所以当我调用此评论功能时它会重定向到页面,但是,新页面不显示我看似通过它传递给它的信息阿贾克斯。有人可以告诉我为什么它不起作用? HTML和all都无关紧要,因为我只是传递输入ID和ajax数据(eID收集并遍历html输入ID),这完全需要我可能缺少的特殊JS函数。当按下Codiqa按钮时,它在JS中调用“reviewdata()”函数:

JS

//UPLOAD DATA
//Global variables
var extractform = {
    'cable_no' : "",
    'section_no' : "",
    'extract_ft' : "",
    'cable_status' : "",
    'conduit_status' : "",
    'extract_date' : "",
    'extraction_team' : ""
}

function reviewdata() { 

//Read all of the data from the page
for (eID in extractform) {
    extractform[eID] = document.getElementById(eID).value;
}
        review_extractform();
}
function review_extractform() {
$.ajax({
    type: 'POST',
    url: './php/review.php',
    data: extractform,
    async: false,
    dataType: 'text',
    success: function() {
    },
    complete: function() {
        window.location.assign("./extraction/php/review.php?");
    }
});
};

然后AJAX通过这个重定向页面

PHP

//Assign passed parameters
$cable_no = $_POST['cable_no'];
$section_no = $_POST['section_no'];
$extract_ft = $_POST['extract_ft'];
$cable_status = $_POST['cable_status'];
$conduit_status = $_POST['conduit_status'];
$extract_date = $_POST['extract_date'];
$extraction_team = $_POST['extraction_team'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Sample Title</title>
</head>

<body>
<table align="center" width="100%">
    <tr>
        <th>Cable Type</th>
        <th>Section Number</th>
        <th>Extracted Footage</th>
        <th>Cable Status</th>
        <th>Conduit Status</th>
        <th>Extract Date</th>
        <th>Extraction Team</th>
    </tr>
    <tr style="text-align:center;">
        <td><?php echo $cable_no; ?></td>
        <td><?php echo $section_no; ?></td>
        <td><?php echo $extract_ft; ?></td>
        <td><?php echo $cable_status; ?></td>
        <td><?php echo $conduit_status; ?></td>
        <td><?php echo $extract_date; ?></td>
        <td><?php echo $extraction_team; ?></td>
    </tr>
</table>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

我不确定AJAX方面,也不确定你要做什么。

在第二个代码部分,您将创建新的php变量$cable_no = $_POST['cable_no'];,如果帖子来自表单操作的上一页,则该变量应该用于分配值。

我总是用相同的名称和id命名表单的每个字段(我忘记了它使用的是哪一个),即:

Name: <input type="text" name="name" id="name">

如果您需要保存甚至不同页面和刷新的值,您可能希望使用cookie或会话(cookie),cookie将信息存储在用户计算机上,会话cookie使用令牌并将数据存储在服务器上。 (我认为会话cookie的默认时间为90分钟。)

您也可以发布实际的表单页面。它可能有助于解决问题。我没有JSON位的必要知识或将jquery(ajax)与php结合使用。

添加了注释:您还应该使用HTML5 doctype <!DOCTYPE html>开始转换到HTML5(这更容易记住)

答案 1 :(得分:1)

我确信这将是使用ajax的更快的解决方案。 只需将$ _POST更改为$ _GET

即可
function review_extractform() {
    var url = "./extraction/php/review.php?";
    //var queryString = extractform.join();
    var queryString = $('iframe_id').serialize();
    document.getElementId('iframe_id').src = url  + queryString;
}

编辑: 添加.serialize()