-2

ボタン付きのフォームがあります。ユーザーがそれをクリックすると、javascript 関数で記述された onclick イベントがあります。同時に、フォームの値をサーバー上のテキスト ファイルに記録したいと考えています。これは php のコードによって行われています。ここに私のジレンマがあります:

タイプが「ボタン」に設定されている場合、onclick イベントは正常に機能しますが、フォームの値は php コードに取り込まれません。タイプが「Submit」に設定されている場合、php コードは正常に動作しますが、onclick イベントがオーバーテイクされます。

私の質問は次のとおりです。回避するための簡単な解決策はありますか? ありがとうございました。

更新:ここで親切に助けてくれてありがとう。これまでのところ、まだ解決策を見つけることができませんでした。問題は、フォームの送信機能が組み込まれると、iframe コンテンツが読み込まれないことです。キーコードは次のとおりです。

/**** index.php:  ****/
<form id="form1" name= "form1" method="post" >
<center>
<table>
<tr>
<td><b><p id="zip_code">Enter Zip Code:</p></b></td>
<td><input id="zipcode" name="zipcode" placeholder="12345" type="text" /></td>
</tr>

</table>
</center>
<input value="Check Inventory" onclick="getwebURL()" type="button" /> 
</form>

/** the onclick event will update the iframe contents **/
<iframe id="myFrame2" src="" name="myFrame2" height="1026" width="100%"></iframe>
/** php code that will record user inputs with time stamp **/
<?php
ini_set("auto_detect_line_endings", true);
// Get the zip code they entered in the form
$zipcode = $_POST['zipcode'];
// We want the file to be a text file right?
$ex = "record.txt";
// Try to open a file named $file$ex (johndoe.txt for example)
// Because this file doesn't exist yet the server creates it
$write = fopen("$ex","a");
// Now open the file up again but this time save the email in it
$savestring = $zipcode . "," . date("c") . "," . "\n";
fwrite($write,$savestring);
// MAKE SURE you close the file!!!
fclose($write);
?>

/**** Javascript that has getwebURL() function ****/
function getwebURL()
{
     document.getElementById('myFrame2').src='http://www.example.com?zipCode='+document.getElementById('zipcode').value;
}

Update2: 読んだ後、私の最善の策は、AJAX 呼び出し php コードを使用して、TYPE "Button" として onclick イベント内に保持することです。特にパラメータを渡す方法など、誰もがそのような例を持っています。ありがとう。

Update3: AJAX 呼び出しの php コードを使用し、問題を解決しました。皆様、ご親切にありがとうございました。

4

4 に答える 4

0

送信ボタンのクリック イベントではなく、送信イベントをリッスンします。

$("#submitbutton").submit(function(){
  $.post("ajax/writestufftofile.php", data ...); // Send data to php script to write to file
});

上記のコードのようなものは、送信イベントをリッスンし、発生すると ajax 呼び出しを Web サーバーに送信し、フォームを送信します。

于 2013-09-12T09:19:25.707 に答える
0
$('#button').click(function() {
 $('#formId').submit();
});
于 2013-09-12T09:19:58.120 に答える
0

イベントを使用しないで、代わりにonclickフォームのイベントを使用してください。onsubmit

<form onsubmit="return my_js_function();">
    <!-- your form -->
</form>

onsubmitフォームが送信されると、イベントがトリガーされます。ハンドラーが実行された、フォームが送信されています。onsubmitJavaScript コードが実行され、フォームが送信されます。

関数に戻るfalseことで、送信を中止できます。フォームを送信したい場合は、true念のために に戻ることをお勧めします。


編集

さて、あなたは次のことをしています:

  1. ユーザーが郵便番号を入力
  2. ボタンがクリックされるので、iframe の src を変更します
  3. フォームが送信されます
  4. PHPで処理

フォームを送信するときは、ページの更新が必要です。PHP はサーバー側で実行されるため、PHP を実行するには新しいリクエストが必要です (AJAX を使用している場合を除きますが、それは別の話です)。ページが再度ロードされたときに iframe の URL を変更する必要があります。JavaScript はまったく必要ありません。

<form action="#" enctype="application/x-www-form-urlencoded" method="post">
    <input type="text" name="zipcode" placeholder="12345" value="<?php echo $_POST['zipcode']; ?>" />
    <input type="submit" name="submit" value="Go!" />
</form>

<?php
// Are we dealing with a POST request?
if($_SERVER['REQUEST_METHOD'] === 'POST') {
    $zip = $_POST['zipcode'];
    $file = 'record.txt';

    // There's no guarantee we can open this file
    if($handle = fopen($file, 'a')) {
        $str = $zip . ',' . date('c') . ',' . "\r\n";

        fwrite($handle, $str);
        fclose($handle);
    }

    // Looks like everything went well. It's time to display the iframe!
    $url = 'http://www.example.com?zipCode=' + $zip;
    echo '<iframe src="' . $url . '"></iframe>';
}
?>
于 2013-09-12T09:20:05.670 に答える
0

button関数にコードブローを追加してから、タイプを試してください

$('#myid').submit();

于 2013-09-12T09:19:00.543 に答える