0

<selectphp/xhtmlページに要素があります。onchange()送信ボタンを使用する代わりに、Javascriptとsubmit()メソッドを実装しようとしています。失われた隠しフィールドを補うために、複数の変数を渡す必要があります。onchangeメソッドとsubmitメソッドが起動していますが、同じページにあるPHPissetをトリガーするように取得できません。

<?php
if(isset($_POST['companykey'])){
$nowIveGot1 = $_POST['COMPANYKEY'];
$nowIveGot2 = $_POST['USERNAME'];
?>

<script language="javascript">
function copy(selectedValuePassed, selectedNamePassed, userIDPassed, formNamePassed) { 
var formNameReceived = formNamePassed;
var userIDReceived = userIDPassed;
var selectedValueReceived = selectedValuePassed;
var selectedNameReceived = selectedNamePassed;

var form = document.createElement("form");     
form.setAttribute("method", "post"); 
form.setAttribute("action", ""); 
form.setAttribute("name", formNameReceived);
form.setAttribute("id", formNameReceived);

var valueSelected = document.createElement("input"); 
valueSelected.setAttribute("type", "hidden"); 
valueSelected.setAttribute("name", selectedNameReceived); 
valueSelected.setAttribute("id", selectedNameReceived);
valueSelected.setAttribute("value", selectedValueReceived);
form.appendChild(valueSelected); 

var passusername = document.createElement("input");
passusername.setAttribute("type", "hidden");
passusername.setAttribute("name", "USERNAME");
passusername.setAttribute("id", "USERNAME");
passusername.setAttribute("value", userIDReceived);
form.appendChild(passusername);

document.body.appendChild(form); 
form.submit(); 
} 
</script>

<select onchange="copy(this, 'COMPANYKEY','jarrett', 'companykey');">
  <option value="Text1">Text 1</option>
  <option value="Text2">Text 2</option>
</select>

解決済み:valueSelectedとpassusernameの親要素を作成します。issetチェック名を付けます。

4

1 に答える 1

0

私があなたの問題を理解していれば...

<?php
if(isset($_POST['companykey'])){
    $nowIveGot1 = $_POST['COMPANYKEY'];
    $nowIveGot2 = $_POST['USERNAME'];
}

$_POST['companykey']常に実行さnullれ、条件ifは決して実行されません。

これは、キーと値のペアが要素に$_POSTアタッチされたときに配列に渡され<form>ず、埋め込まれた のみが渡されるため<input>です。

'companykey'JavaScript では、最後の引数として に渡しますcopy。そこから配属されformNameReceivedます。name次に、フォームの属性に次のように割り当てます。

form.setAttribute("name", formNameReceived);
form.setAttribute("id", formNameReceived);

'companykey'このように配列に表示されることはありませ$_POSTん。入力にアタッチされているのではなく、formそれ自体にアタッチされています。

通常の HTML 類似物として、これを想像してみてください。

<? print_r($_POST);?>
<html>
<body>
<form method='post' name='cat' value='dog'>
    <input type='hidden' name='foo' value='bar'/>
    <input type='submit'/>
</form>
</body>
</html>

このフォームを何度送信しても、cat -> dogペアが含まれることはありません。配列に表示したい場合'companykey'は、それを別の隠し入力に割り当てる必要があります。

于 2012-09-14T00:48:58.333 に答える