0

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

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

我在 iframe 外部使用 Codiqa 的按钮来定位内部框架的 js 函数,所以当我调用此审查函数时,它会重定向到页面,但是,新页面不会显示我似乎通过 Ajax 传递给它的信息。有人可以告诉我为什么它不起作用吗?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>
4

2 回答 2

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 开始转换到 HTML5 <!DOCTYPE html>(这更容易记住)

于 2013-04-19T21:39:47.690 回答
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()

于 2013-04-20T06:00:15.053 回答