C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ajaxの非同期通信で同じページにpost送信したい


(過去ログ 123 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■73506 / inTopicNo.1)  ajaxの非同期通信で同じページにpost送信したい
  
□投稿者/ touka (1回)-(2014/10/02(Thu) 22:37:05)

分類:[JavaScript] 

開発環境:PHP5.5.11、jquery1.6.1
検証ブラウザ:Crome

phpとjavascriptを使ってWebページを作成しております。

テーブル行をクリックしたタイミングで
選択行の背景色の変更とPOSTデータの送信をしたいのですが、
画面の再描画をさせたくないので、Submitを行わずに
Ajaxの$.postを使って同じページへのデータ送信と一部分のみの再描画を実装しようとしています。

自分なりにサイトを参考にしながら組んでみたのですが
うまくいかず、困っています。

そもそも、同じページへの非同期通信POST送信はできないのでしょうか?
どなたかご教授いただけると大変助かります。
どうかよろしくお願い致します。



【test.php】一部抜粋 ---------------------------
<!-- 関数 -->
 <script type="text/javascript">
 function Asubmit(trid){
  var val = trid;
  $(function(){
  $.post(
   'test.php',
     { 'select_row' : trid },
      function(data){
      alert(data);
     }
   );
  });
 }
</script>

<!--html記述部分 ※ヘッダ部・メタ情報は省略 --->

<?php

 if(isset($_POST["select_row"])){
  session_start();
  echo $_POST["select_row"];
  $_SESSION['@0901']['select_row']=$_POST["select_row"];
}

?>

<form method="POST" action="#" name="form1" id="form1" >
 <table>
  <tr id="tr1" OnClick="Asubmit('tr1')" bgcolor="#ffffff">
  <input type="hidden" name="select_row" id="select_row" value="" >
  <td>データ1</td><td>データ1</td>
  </tr>
  <tr id="tr2" OnClick="Asubmit('tr2')" bgcolor="#ffffff">
  <input type="hidden" name="select_row" id="select_row" value="" >
  <td>データ2</td><td>データ2</td>
 </tr>
 </table>
</form>
引用返信 編集キー/
■73507 / inTopicNo.2)  Re[1]: ajaxの非同期通信で同じページにpost送信したい
□投稿者/ しま (86回)-(2014/10/03(Fri) 01:23:14)
No73506 (touka さん) に返信
> 開発環境:PHP5.5.11、jquery1.6.1
> 検証ブラウザ:Crome
>

Crome ではなく Chrome ですね。
なぜ、古い jQuery を使うのでしょうか?Chrome が古いからそれに合せているのでしょうか?

> phpとjavascriptを使ってWebページを作成しております。
>
> テーブル行をクリックしたタイミングで
> 選択行の背景色の変更とPOSTデータの送信をしたいのですが、
> 画面の再描画をさせたくないので、Submitを行わずに
> Ajaxの$.postを使って同じページへのデータ送信と一部分のみの再描画を実装しようとしています。
>
> 自分なりにサイトを参考にしながら組んでみたのですが
> うまくいかず、困っています。

何が上手くいかないのか説明が足りません。
やりたかったことのうち何が出来きて、何が出来ないかこれでは分りません

> そもそも、同じページへの非同期通信POST送信はできないのでしょうか?

ページから見て、自分自身を生成する相手に対して自分を生成するように要求するのが非同期通信なのかどうか分りません。
test.php が生成するページから test.php に対して POST して、JSON 形式の応答を求めないのならページの生成を要求しているのではないかと
受取りました。
私はページを生成する部分と受信結果に応答する部分とは別の *.php に分けます。
その方が分りやすいからです。作るのにも、修正するのにも機能別になっていて分り易いと考えます。
又、$.post() ではなく、$.ajax() を使うのが AJAX 通信が成功したか失敗したか、失敗の原因などが調べられるなど
デバッグし易いので私は好きですし、JSON 形式の応答にもとづいてページの書替えをすればページの遷移が起こらないので
javascript のデッバグも楽だと思います。

これは私の感想ですが、 jQuery を使っているのに、何故古臭い方法でイベント処理をするのでしょうか?
ボタンクリックのイベント応答も jQuery で記述した方が分り易いと思いますよ。
私なら、 test.php で使う jQuery はひとまとめのファイル例えば test_php.js にして閉じ込めてしまいたいですね。

<script src="test_php.js"></script>

と記述すれば、test_php.js が test.php で利用可能になるでしょう。

引用返信 編集キー/
■73517 / inTopicNo.3)  Re[1]: ajaxの非同期通信で同じページにpost送信したい
□投稿者/ WebSurfer (359回)-(2014/10/06(Mon) 13:33:47)
No73506 (touka さん) に返信

> そもそも、同じページへの非同期通信POST送信はできないのでしょうか?

それは問題もなくできるはずです。

問題は、やりたいこと、

> 同じページへのデータ送信と一部分のみの再描画を実装しようとしています。

が実現できるように、

(1) ブラウザは、必要な情報を Web サーバーに POST しているか、

(2) POST された情報を Web サーバーが受け取れているか、

(3) Web サーバーは受け取った情報を期待通りに処置しているか、

(4) Web サーバーは処置した結果をブラウザに返しているか、

(5) ブラウザが Web サーバーから受けた応答の内容は期待通りか、

(6) ブラウザは応答を受け取って目的の「一部分のみの再描画」を行っているか・・・です。

上記のどこかでつまずいているのだと思いますが、そのあたりを具体的に書かないと、的を
得た回答を得るのは難しいと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -