【问题标题】:Needing to Pass Post Data to new page after Redirect (using iFrames)重定向后需要将发布数据传递到新页面(使用 iFrames)
【发布时间】:2013-04-19 21:09:20
【问题描述】:

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

基本上,在您感到困惑之前,我只想使用 iframe 外部的按钮来使用表单的操作和发布方法......

我在 iframe 外部使用 Codiqa 的按钮来定位内部框架的 js 函数,因此当我调用此审查函数时,它会重定向到页面,但是,新页面不会显示我似乎通过它传递给它的信息阿贾克斯。有人可以告诉我为什么它不起作用吗? HTML 和所有内容都无关紧要,因为我只是将输入 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>

【问题讨论】:

    标签: php ajax redirect


    【解决方案1】:

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

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

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

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

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

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

    补充说明:您还应该使用 HTML5 文档类型 &lt;!DOCTYPE html&gt; 开始转换到 HTML5(这更容易记住)

    【讨论】:

    • 感谢您的提示。我通常会使用表单提交,问题是我找不到将 iframe 的提交按钮定位到 iframe 外部按钮的表单的方法...有没有办法在 iframe 内定位表单提交?因为据我所知,从父窗口的按钮无法访问表单操作和发布方法。
    【解决方案2】:

    我确信这将是使用 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()

    【讨论】:

    • 虽然没有将 iframe 加载到 review.php 中
    • 该代码会将 review.php 加载到 iFrame 中。您只需将 'iframe_id' 更改为 iFrame 的 id。
    • @jflay 你有什么理由使用javascript,而不是
    • 原因是,正如我上面所说,我在 iframe 外部有一个按钮,用于定位 iframe 的 JS 函数,但我找不到使用这个外部按钮的方法使用 HTML 格式的 post/action 属性(存在于 iframe 中)。所以我不得不尝试使用 javascript 作为帖子和操作来解决这个问题。我同意,我想使用表单属性,但是客户设计的东西我使用 iframe 的方式......叹息
    • @jflay 是的,这些限制很糟糕。听起来您需要document.getElementById('targetFrame').contentWindow.targetFunction(); 之类的东西来调用位于iframe 内的javascript。 reference
    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多