2009-04-02 3 views
1

私のAJAXフォームを提出する際に問題があります。私はリフレッシュして古風な方法に慣れていますが、この新しいものは当分私の外にあります。新しい技術の習得を始めましょう。ajaxの不具合リフレッシュせずに提出する。私は助けが必要です

私はデータベースから私の結果を得て、ちょうど良いテキストボックスにデータを入力している自動詰め合わせボックスを持っています。私はこれを約6ヶ月前に設計しましたが、キー値ではなく値でデータベースを検索していました。これは今日の問題であり、修正する必要があります。

ajaxがスクリプトに返すものは、キーと値のペアです。私はIDを持っているので、私はそこから処理することができるように、私はそれを私のPHPメソッドに渡す必要があります。

私はこれで私に手を差し伸べることができますか?それは十分にシンプルなようですが、再び、javascriptは決して私のものではなかったので、私は迷っています。

これはすべて関連コードです。また、少なくとも私が今まで見たコードサンプルからは、フォームタグが必要でさえあるとは思わない。私はこれを訂正していますか?理想的には、見つかったajax値をボタンを使用せずに入力ボタンで送信したいと考えています。

したがって、明らかにするには、これが起こります。ユーザーは2文字または3文字を入力します。 ajaxは "LIKE"演算子でdbに照会し、一致を返します。ユーザーが望むものを選択すると、idは自分のメソッドに行き、正確なレコードを別のウィンドウに返します。

<form method="post" class="hdrForm" id="search" action="../../index.php?cer=2" target="_top"> 
<input type="text" name="string" class="hdrInput" id="string" value="Quick Search"><div id="acDiv"></div> 

</form> 

注..私は、この機能では、 "ID" が提出する必要があります。今、フォームのタグからPOST valを取得していますが、それは正しくありませんがどうですか?

AC.chooseFunc = function(id,label) 
    { 
    document.forms.search.submit(); 
    } 

皆さん、私にこれを教えていただきありがとうございます。 AJAXせずに、action属性でページに正常に送信されたフォームを取得するjavascriptをせずに、そのユーザーに(サーバー側プログラムを右書かれている場合)

答えて

0
document.getElementById("search").onsubmit = function() { 
    // Do what you want with the form 
    return false; // Stops submit continuing 
} 

これも優雅に低下します。

jQueryなどのフレームワークを使用することをお勧めします。 A basic tutorial (including AJAX) is available

+0

ありがとうございました。たぶん私はもっと明示的にすべきだったでしょう。私は必要なIDを提出する方法を知らない。 AJAXから返された値はPOST varですか?何とかそれをエコーする方法はありますか?私はアラートにIDを得ることができますが、私はちょうど私のクエリ文字列でそれを渡す方法を知らない。それが私が必要な場所です。 –

+0

これをクエリ文字列に渡すことは、値を渡す方法を知っている唯一の方法です。 –

+0

ほとんどのAJAXリクエストはGETです。あなたが検索のためだけに使用しているのであれば、GETは大丈夫です。 XHRオブジェクトを使用するときは、GETまたはPOSTを設定します。このすべてがあまりにも混乱している場合は、jQuery(http://jquery.com)などのライブラリを試してください – Macha

2

jQueryをご覧ください。これはjavascriptライブラリです。 Ajaxを実行するための機能が含まれています。

0

2つの問題があります。リフレッシュを引き起こし -

フォームは、標準的な、非XHRの方法で提出することを引き起こしているものです
document.forms.search.submit(); 

は:一つは、あなたが提出するフォームを言っているということです。また、フォームにidの入力要素が含まれていないため、通常のフォーム送信でもサーバーに送信されません。

jQueryや何かを使ってajaxベースの投稿を行うことをお勧めします。 thisのようなものは、フォーム送信の代わりに "AC.chooseFunc"関数の内部で使用できます。

はい、あなたが完全にajaxに行くと、フォームタグは必要ありません。

関連する問題