昨日、Ajax通信で受け取ったデータをチェックボックスに反映する方法を教わった者です。
今度は送信で悩んでいます。
表のデータをPOSTで送るんですが、テキストのところ(「td」に書かれたものや input type="text" の部分)
は問題なく渡せました。
でもまたまたチェックボックスでつまずいています。
★☆★☆★☆★☆の部分ですが、プログラムは通るのですが、チェックボックスの内容(チェックか否か)を
拾ってくれません。
また、rows[i].getElementByTagName("sendF[]") などとやってみたんですが、エラー(not a function)が出てしまいます。
どなたかご指導下さい。
よろしくお願いします。
$.ajax({
type: "POST",
url: "../SendList.php",
data: {"condition":condition}, // Webサーバに送信するデータ
dataType: 'text', // Webサーバか受信するデータの形式
success: function(request){ // ajax通信が成功したときの処理
var json = JSON.parse(request);
var res = '';
for (var i = 0; i < json.length; i++){
res += '<tr>'
+ '<td style="text-align: center;">' + json[i].personId + '</td>'
+ '<td style="text-align: center;">' + json[i].personName + '</td>'
+ '<td style="text-align: center;">';
// 値を checkbox のチェックに差し込む
if(json[i].sendF == 1){
res += '<input type="checkbox" id="sendF[' + i + ']" name="sendF[]" checked />';
} else {
res += '<input type="checkbox" id="sendF[' + i + ']" name="sendF[]" />';
}
res += '</td >'
+ '<td style="text-align: left;">'
+'<input type="text" id="memo" name="memo" value="' + json[i].memo + '" />'
+ '</td >'
+ '</tr>';
}
var obj = document.getElementById("datatable");
obj.innerHTML ='<table id="tbl_correspondUpdate" class="customerlist"><tr><th>担当者ID</th><th>担当者名</th><th>送信F</th><th>メモ</th></tr>'
+ res
+ '</table>'
+ '<br />'
+'<p class="condition_submit">'
+ '<input id="btnUpdate" type="button" onclick="doActionUpdate();" value="更新" />'
+ '</p>';
},
error: function(msg){ // ajax通信が失敗したときの処理
alert( "Data Saved: " + msg );
}
});
}
// 「更新」ボタンクリック
function doActionUpdate(){
var tbl = document.getElementById("tbl_correspondUpdate");
var cols = tbl.rows[0].cells.length;// 列数
//var rows = tbl.rows.length; // 行数
var rows = tbl.rows;
// 行に対するループ
for (var i=1; i<rows.length; i++) {
var sendF;
if(rows[i].cells[6].checked){★☆★☆★☆★☆// → 通るものの拾わない
//var elm = rows[i].getElementByTagName("sendF[]");// → not a function
//if(elm.checked){
sendF = 1;
}else{
sendF = 0;
}
// dataセット
var data = "personId=" + rows[i].cells[0].innerHTML
+ "&sendF=" + sendF
+ "&memo=" + rows[i].cells[3].firstChild.value
updateRecord(data);
}
}
// 更新処理
function updateRecord(data){
// 更新Ajax処理
// 更新したIDを返す
$.ajax({
type: "POST",
No.1ベストアンサー
- 回答日時:
いろいろ間違えていますが、そもそも HTML Form の使い方を勘違いしています
HTML Form には、フォーム内容を簡単に扱える仕組みがあるので、それを利用しない手はありません。
https://developer.mozilla.org/ja/docs/Web/API/HT …
たとえばこの様に
<form onsubmit="doActionUpdate(this);return false">
...
<input type=hidden name="personId.0" value=123>123
<input type=checkbox name="sendF.0" checked>
<input type=text name="memo.0" value=ほげ>
...
<input type=hidden name="personId.1" value=456>456
<input type=checkbox name="sendF.1">
<input type=text name="memo.1" value=ふが>
...
<input type=submit value=更新>
</form>
<script>
function doActionUpdate(form) {
var e = form.elements; // フォーム内の入力要素を name で取得
for (var i = 0; e['personId.' + i]; i++) {
var personId = e['personId.' + i].value;
var sendF = e['sendF.' + i].checked;
var memo = e['memo.' + i].value;
updateRecord(personId, sendF, memo);
}
}
</script>
回答ありがとうございました。
なかなかJavascriptが理解できずに困っています。
Formで括ることはわかるんですが、この場合はテーブルに配置された
データを登録するので行数は可変です。2行のときもあれば10行のときもあるわけですが、
その場合、1件についてFromでくくるんでしょうか。
submitがひとつであることを考えると、可変行を含めてすべての行を含んで
Formで括ればいいわけですね。
例示して頂いた
<input type=hidden name="personId.0" value=123>123
のところの「personId.0」を「personId.+ i」みたいな感じで回せばいいのかも
しれませんね。
例示を参考にちょっと頑張ってみます。
「いろいろ間違えていますが」がとありますが、勉強のためでもありますので、
具体的に指摘して頂けるとうれしいです。
よろしくお願いします。
No.2
- 回答日時:
誤: rows[i].cells[6].checked
可: rows[i].cells[2].firstChild.checked
誤: rows[i].getElementByTagName("sendF[]").checked
可: rows[i].getElementsByName("sendF[]").checked
正: document.getElementById('sendF[' + (i-1) + ']').checked
悪: id/name を無意味に指定している
良: スタイル/スクリプト/フォーム送信で使用するもの「だけ」指定する
悪: 入力要素の取得方法が、不必要に面倒
悪: 何のための id="sendF[' + i + ']" なのか...
良: getElementById / getElementsByName / form.elements で一発取得
Ogre7077 さん、返信が遅くなって申し訳ありません。
間違いの部分をいろいろ教えて頂き、ありがとうございました。
なんかずいぶん無駄で間違ったことをやっているんだなぁ、
と思いました。
教えて頂いたコードを元に何とかできるようになった感じなんですが・・
今度はフォームをシリアライズして一度に複数件のデータを送った時、
PHP側でどのようにばらせばいいのかでつまづいています。
引き続きご指導下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスの中味を送信...
-
チェックボックスの設定
-
ラジオボタンを選択でチェック...
-
【UWSC】HTML内のある部分を抽...
-
UART通信の取説で,left floati...
-
javascriptでセレクトボックス...
-
プルダウン 項目が多いので先頭...
-
JavaScriptカレンダーの日付を...
-
Selenium.ChromeDriverの使い方...
-
HTMLで入力したものを変数で扱...
-
1つのform内に2つのsubmitボタ...
-
onclickが動作しない
-
ホームページ作成について。
-
プルダウンメニューからPDF表示
-
ラジオボタンのチェックが外れ...
-
radioボタンの値の取得の仕方?
-
ハイパーリンクを別ウインドウ...
-
フォーム内で記入したクエリ送...
-
tableの任意行にfocusをあてる
-
ホームページビルダーのスクリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスのON/OFFでVal...
-
チェックボックスの設定
-
【jsp/Java】チェックボックス...
-
背景色を変えて未入力チェック...
-
フォームのチェックボックスの...
-
確認ページからフォームページ...
-
オフになっているチェックボッ...
-
EclipseでSpringを使用し、テー...
-
チェックボックス
-
チェックボックスのON/OFFに応...
-
javascriptでチェックボックス...
-
複数のチェックボックス項目が...
-
checkboxをクリックしてリロー...
-
Nameは配列で、チェックされた...
-
複数あるチェックボックスから...
-
チェックボックスが1つ以上チェ...
-
JSP内で可変するチェックボック...
-
ラジオボタンとチェックボック...
-
チェックボックスを複数選択し...
-
selectメニューによるチェック...
おすすめ情報