0

私のクライアントはiframe機能を維持することを主張しており、情報を送信した後、送信前にその情報を確認して確認するページが必要なため、現在、私はやや厄介な状況にあります。正しくない場合は、戻って変更を再送信します.

基本的に、混乱する前に、iframe の外側のボタンを使用して、フォームのアクションとポスト メソッドを使用したいだけです。

iframe の外側にある Codiqa のボタンを使用して、内側のフレームの js 関数をターゲットにしているため、このレビュー関数を呼び出すと、ページにリダイレクトされますが、新しいページには、Ajax 経由で渡されたように見える情報が表示されません。誰かがなぜそれが機能しないのか教えてもらえますか? 入力 ID と ajax データ (eID は HTML 入力 ID を収集して反復する) を渡すだけなので、HTML とすべては無関係です。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の側面について確信が持てませんし、あなたが何をしようとしているのか確信もありません。

$cable_no = $_POST['cable_no'];2 番目のコード セクションでは、フォーム アクションによって前のページから投稿が送信された場合に、値を割り当てるために機能する新しい php 変数を作成しています。

私は常にフォームの各フィールドに同じ名前と 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 に答える