javascript-フォームの入力フィールドの値としてPHP変数を設定できません
SQLクエリに基づいて見つかった行からすべてSELECTを実行するPHPファイルがあります。エコーをdivに入れると、すべての情報が得られますが、フォームの入力ボックスにエコーしようとすると、表示されません。
何が間違っているのですか?
また、セキュリティ慣行やプログラミング標準に関しては、(ほとんどの場合)多くの間違いを犯していることを認識していますが、これはすべて(PHPDesktop> https://github.com/ cztomczak / phpdesktop )はローカルでのみ実行されるEXEファイルにパックされます(SQLite3 DBはEXEにパックされるため、オンライン接続は必要ありません)。そもそも、とても効率的で整然としたコーディングはまだ私のリストの上位にはありません;-)
DO_CUSTEDIT.PHP
$custName = $_POST['custName'];
$query = "SELECT * FROM `CustDB` WHERE CustName LIKE '%$custName%'";
$result = $db->query($query);
while ($row = $result->fetchArray()) {
$custID = $row['CustID'];
......;
}
if (!$result) {
echo $db->lastErrorMsg();
$db->close();
exit;
} else {
echo $custID;
echo ......;
$db->close();
exit;
}
EDITCUST.PHP / Javascipt
<script>
$(document).ready(function() {
$("#subeditcust").on('click',function(e) {
e.preventDefault();
$.ajax( {
url: "lib/do_editcust.php",
method: "post",
data: $("form").serialize(),
dataType: "text",
success: function(strMessage) {
if (strMessage == "Customer updated successfully") {
$("#message").text(strMessage);
$("#neweditform").get(0).reset();
} else {
$("#message").text(strMessage);
}
}
});
});
});
</script>
EDITCUST.PHP / HTML
<form id="editcustform" name="editcustform" action="" method="post">
<div class="row">
<div class="column-half" style="background-color:#fff">
<table>
<tr>
<td>
<a>Customer ID</a>
</td>
<td>
<div class="inputb">
<input type="text" name="custID" value="<?php echo (isset($custID)) ? $custID: ''; ?>" readonly/>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="row">
<table style="table-layout:fixed">
<td style="background-color: rgb(215,215,215); padding:0 10px;">
<button id="subeditcust" type="submit" class="mainbtn">Create</button>
</td>
<td style="background-color: rgb(215,215,215); padding:0 10px;">
<button id="reseteditcust" type="reset" class="mainbtn">Reset</button>
</td>
</table>
</div>
</form>
答え :
解決策:
<input type="text" name="custID" value="<?php echo (isset($custID) ? $custID: ''); ?>" readonly/>
この行を自分の行に置き換えてください。 IA
答え :
解決策:
2つの異なるファイルがあるようですよね? DO_CUSTEDIT.PHPおよびEDITCUST.PHP
変数はDO_CUSTEDIT.PHPで作成されており、HTMLコードを作成するときに、これらの変数($ custID)は設定されません。
一方のファイルにもう一方のファイルが含まれていますか、それとも必要ですか?
答え :
解決策:
EDITCUST.PHPは、フォームをDO_CUSTEDIT.PHPに送信する最初のページです
- EDITCUST.PHPにアクセスすると、変数$custIDは作成されません
- フォームがajaxを介して送信されると、ajaxは、DO_CUSTEDIT.PHPからのデータのエコー方法に応じて、オブジェクトまたは配列のデータ通知を返します。
json_encode()
php関数を使用して配列の通知を返すことをお勧めします - コンソールにデータを記録して値をデバッグするには(ただし、関数
console.log()
) - ajaxから値を返した後、
$(input[name="custID"]).val( data.custID )
のようなjqueryを介してフォームに値を入力する必要があります
答え :
解決策:
なんとか理解できました!
DO_CUSTEDIT.php / PHP
$results = array($custID, $custName);
echo json_encode($results, JSON_PRETTY_PRINT);
EDITCUST.php / HTML
<input type="text" id="custID" name="custID" value="" readonly/>
<input type="text" id="custName" name="custName" value="" readonly/>
EDITCUST.php / JS
<script>
$(document).ready(function() {
$("#subeditcust").on('click',function(e) {
e.preventDefault();
$.ajax( {
url: "lib/do_editcust.php",
method: "post",
data: $("form").serialize(),
dataType: 'json',
success: function(data){
document.getElementById('custID').value = data[0];
document.getElementById('custName').value = data[1];
}
});
});
});
</script>
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。