点数一覧表をajaxで更新できるようにしようとしています。

JavaScript | PHP68閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

>form要素が見当たりません。 ajaxはidからデータを拾うので不要かと思っていました。 whileの前に <form action="j1grades_up.php" method="post"> をつけて実行すると、1行目は更新されますが、2行目以降はデータが表示されるのみとなります。 おっしゃる通りwhileで繰り返すと、idがかぶってしまうため、どのようにajax通信をすればいいのかわかりかねています。 以下jsファイルと更新用phpファイルを記述します。 恐れ入りますがよろしくお願いします。

ThanksImg質問者からのお礼コメント

本当にありがとうございました!!!

お礼日時:4/13 19:04

その他の回答(2件)

0

非同期(というより俗に言う「短冊フォーム」送信でサーバサイド再描画)であれば、ブラウザはほとんど描画だけなので、どう書いてもかまわないですが、Ajaxの場合、とくにサーバ側がjsonしか返さない場合は、再描画の責任はクライアントサイドにあるので、それなりの流儀にしたがわねばなりません。 戻す値がjsonでなく、HTMLならばそのままtrの中にブチ込んでもいいですが。 ということで、まずおなじtrに属する値の取得(レトリーブ): ほかの回答者さんのご意見のとおり、idを使うのは愚です。 おそらく、ベストプラクティスは、各要素にclassを付与し、ボタンのイベントからthis.nearestやthis.parentで直上の親(tr)から、入力要素のクラスを指定して、値を取得することです。 nameもidも不要です。 またそのとき、そのjQuery trオブジェクトを保存します。 んで、コールバックで、戻ってきたjsonを、保持されていたtrからfindで取得した表示要素にハメるのです。 コールバック時にただしくtrを再現できるかがキモですね。 こうすれば、表の各行を識別する無駄な接尾辞は必要ありません。 すべて最小単位(tr)のなかで完結させます。 Ajax送信では、その場で送信オブジェクトを組みますので、フォームは必要ありません。 その認識であってます。

0

>点数一覧表をajaxで更新できるようにしようとしています。 >下記のように表を作成し非同期処理を試みています。 >ajaxでなければ更新ボタン(id="j1button")を押せばその行の更新ができたのですが、今は一番上の行しか更新できません。 プログラム自体は見てませんがid名はページ内で一意でなければなりません。 whileでループさせているので多数の同一のid名が作成されていると思われます。 ループごとの連番を付けるなどの工夫が必要です。