
Yahoo! User Interface の DataTable Control を使った編集可能なリスト作成を考えています。
しかし、Ajaxでの入力値のPHPへの投げ方、また、DBから受け取った値をAjax(DataTable Control)で表示させる方法とも、やり方が全くわかりません…。
(Jasonという形式に成型して出力させる??)
YUIを使用して外部テキストファイルを表示してみたりアニメーションを動かしてみたり、Ajax初心者なりに1ヶ月ぐらい試みてみましたが、DataTable Controlについては今のところ全く成果なしで困り果てています…。
どなたか勘所のある方、ご教示頂けませんでしょうか?
宜しくお願いします。
http://developer.yahoo.com/yui/examples/datatabl …
No.3ベストアンサー
- 回答日時:
すみません、Inlineで編集できることは知りませんでした。
セルをクリックした時に入力欄が表示されますが、それはinputタグです。
firebugで確認してみると、クリック時にbodyタグの直下にinputタグが生成されています。
なので、データの編集にinputタグを使っていないわけではありません。
サンプルでは、データを編集して「OK」ボタンを押すとテーブルが更新されますが、
この時に非同期通信でPHPにデータを送信してMySQLのデータを更新してやれば良いと思います。
yuiのdatatable-beta.jsを見てみると、「OK」ボタンをクリックした時に
editorSaveEvent というイベントが発生するようになっているので、
次のようにイベントハンドラを追加します。
(ここでは、サンプルのコードで使われている変数名を使います。)
this.myDataTable.subscribe("editorSaveEvent", updateDataSource);
updateDataSource関数は自分で作った関数で、この中に非同期通信の処理を記述します。
function updateDataSource(oArgs) {
// 編集後の値はoArgs.newDataに格納されています
// 編集したセルの列名はoArgs.editor.column.getKey()で取得できます
// 編集したセルのレコードの各値はoArgs.editor.record.getData()で取得できます(MySQLのデータを更新するのに必要になってくると思います)
// POSTで送信するデータをqueryに入れて…
YAHOO.util.Connect.asyncRequest( "POST", url, callback, query );
}
順序が逆になってしまいましたが、PHPからデータを取得して表示させる方法は下記のページを参考にしてみてください。
http://developer.yahoo.com/yui/examples/datatabl …
ご存知かもしれませんが、PHPでJSONを生成するにはjson_encode()関数が便利です。
ここではJavaScriptのコードをあまり書きませんでしたが、
簡単なものだと40行ぐらいで書けたので、オブジェクトの中身を
firebugで根気強くデバッグしながらいろいろ書いて試してみてください。
お返事遅くなりすいません。
お陰さまで値を取ることができました。
ただ実は一括で値をPOST送信する方法を模索しています。
こちらでだいぶヒントは頂いたので、具体的になりましたらまた質問させていただこうと思います。
有難うございました。
No.2
- 回答日時:
inputタグがない、というのがいまいちよくわからないのですが…。
inputタグを使わずに(selectやtextareaも使わず)どのようにデータを編集しようとお考えですか?
connectionを使うと、Ajaxを使わない通常のフォームでデータを送信するのと同じように、
フォームのデータを簡単にPHPに送信することができます。
<form id="form1">
<input type="text" name="text1" />
<input type="button" value="送信" onclick="formSubmit(this.form);" />
</form>
<script type="text/javascript"><!--
function formSubmit( form ) {
YAHOO.util.Connect.setForm( form );
YAHOO.util.Connect.asyncRequest( 'POST', 'http://~', callback );
}
//--></script>
PHPからデータを受け取る処理は、callbackのsuccessに指定した関数で行います。
詳しくはこちらをご覧ください。
http://developer.yahoo.com/yui/connection/#forms
この回答への補足
度々すいません。有難うございます。
>inputタグを使わずに(selectやtextareaも使わず)どのようにデータを編集しようとお考えですか?
実際にDataTable:Inline Cell Editingを見ていただくと分かると思うのですが、このパッケージのオブジェクトを使用して編集させているようです。http://developer.yahoo.com/yui/examples/datatabl …
今回の趣旨は、そのオブジェクト内で編集された値を取得し、phpに渡せるようにしたいということです。
でも、ソースを見るとHTMLタグはdivタグぐらいしか見当たりません。。
表示自体は<div id="cellediting"></div>内に表示させているようですが、それを<form id="cellediting"></form>と変えただけでは上手くいきませんでした。
ちなみに、過去に作ったソースを見直したら、アニメーションさせるBOX内に外部テキストを読み込ませていたので、connectionは使っていました。
しかしここでも高さなどを指定するのにformタグを使用しています。
このオブジェクトテーブル内の値さえ取れれば大丈夫だと思うのですが…。
No.1
- 回答日時:
YUIでAjaxでしたらconnectionですね。
いきなりDataTableにAjaxを組み合わせるのは難しいと思うので、
まずはconnectionを使えるようになる必要があります。
HTTP通信や非同期通信の仕組み、JSON(XMLでもいいですが)の構造、
フォームからPHPへのデータ受け渡しなどを勉強して、
connectionが使えるようになってからDataTableと組み合わせてみてはいかがでしょうか。
YUIで外部テキストファイルの表示やアニメーションができただけでは、
まだまだ知識が不十分だと思います。
まずはJavaScript、PHP、通信の基礎からですね。
この回答への補足
かれこれ5年やっているのでPHPのHTTP通信で値をやり取りする手法は知っています。
しかし、JavaScriptで記憶してるのはかなり過去の簡単なものです。
私が知っている手法だとinputタグがないのでdocument.form.element.option.valueなどで値を取って任意phpファイルにsubmit()することができません。
ですので、例によってこのパッケージ特有の値をとる関数でもあるのでしょうかという質問でした。
値の読み込みはXMLでもJSONでも、型が定まりさえすればその型になるようPHPでファイル生成したのち、そこから読み込みできるので問題ありませんが、それ以外でパッケージ側で用意した手法があるのでしょうかという意味です。
inputタグがなくても、万事connectionパッケージで値が取れ、submit可能なのでしょうか。
ご存知でしたらお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- MySQL [XAMPP Control Panel v3.2.4] 最新ではないみたいです。何処かに? 2 2022/06/01 14:33
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
イベントの発生
-
AJAX→PHP -DB(MySQL)- PHP→AJAX...
-
JavaScriptで月に対して日の整...
-
JSPの処理の途中で、JavaScript...
-
htmlのfileタグに自動で値を入...
-
VBを使ってのタイピングについて
-
HTML上(javascript)からCGIを...
-
文字認証の問題
-
i-modeページで使用可能ですか?
-
ポップアップヘルプをフレーム...
-
Javascriptが開けません。
-
Excel 2003 VBAにてマクロの実...
-
プルダウンメニューのリンク
-
自サーバに置いたWEBページから...
-
Webページ中の javascript をVB...
-
ajaxを使用した場合にPHP出力文...
-
C言語の問題
-
ASP(VBS) ←→ JavaScript の変数...
-
WSHでエクセル」を検索表示
-
Perl LINE(チャット) 仕組み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
連動プルダウンについてです。
-
助けてください!スパムメール...
-
「戻る」ボタン使用時のフォー...
-
JavaScriptで月に対して日の整...
-
javascript・JSP関連
-
PHP処理実行後のページの遷移に...
-
Ajax以外で、JavaScriptからPHP...
-
フォーム入力の自動切換え
-
Onclickイベントでデータをcgi...
-
画面遷移させずにCGIの戻り値を...
-
javascriptからpythonへ値の受...
-
現在日付を初期値にするには
-
特定のメルアドを不可にするには
-
javascriptでCGIに値を渡したい...
-
指定した日時にリロード処理を...
-
jQueryMobileについて
-
javascript外部ファイルから読...
-
getで日本語を受け取りたい
-
javascript 選択した値のみを送...
-
Javascriptでスパム対策は可能?
おすすめ情報