2009-07-11 13 views
1

のjQuery v1.2.6jQueryオートコンプリートでPOSTをどのように使用しますか?

jQuery.autocompleterプラグインv1.1pre私は 'タイプ: "POST"' で提出することはできませんよ

(jQueryのウェブサイトから)戻って私のWebサービスへ。私はそれをオートコンプリートで認識させることはできません。思考?

"q"クエリーストリングを探す限り、以下のコードは正常に動作します。しかし、私はこれを、より多くのパラメータを渡すことによって、将来のより高度な機能に使用したいと思います。また、オートコンプリートを使用してポストバックする方法を理解しています。

私はextraParamsオプションについて認識しています。しかし、それらはGETまたはPOST(私たちがPOSTを動作させることができれば)によって提出される余分なパラメータです。それはPOSTとして送信するために変更されません。

$(function() { 
    $('#searchBox').autocomplete(
     "/services/college.asmx/lookupColleges", 
     { 
      delay: 5, 
      minChars: 1, 
      matchSubset: 1, 
      matchContains: 1, 
      cacheLength: 10, 
      autoFill: false, 
      dataType: 'json', 
      parse: function(data) { 
       var rows = new Array(); 
       for (var i = 0; i < data.length; i++) { 
        rows[i] = { 
         data: data[i] 
         , value: data[i].Data 
         , result: data[i].Name 
        }; 
       } 
       return rows; 
      }, 
      formatItem: function(row, i, n) { 
       return row.Name; 
      } 
     }).result(function(event, row) { 
      processSelection(this, row.Data); 
     }); 
}); 

POSTのオプションを追加しようとしましたが、以下のコードサンプルに記載されています。しかしそれはまだGETとして提出する。

delay: 5, 
minChars: 1, 
matchSubset: 1, 
matchContains: 1, 
cacheLength: 10, 
autoFill: false, 
dataType: 'json', 
type: 'POST', 

何か助けていただければ幸いです。

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

PS、これは多くの文書化されていない、試行錯誤の後に把握するPITAでした。火かき棒の良さに感謝します。

あなたは私はあることに注意しましょう:

  • オートコンプリートがネイティブJSONを扱うことができないWebサービスから戻ってJSONを受けるので、私は私自身の配列にそれを解析する必要があります。
  • カスタム配列オブジェクトを返すようになったので、表示目的で新しい配列オブジェクトを処理するには、formatItemを上書きする必要があります。
  • 最後に、お金を集めました。ユーザーが行(マウスクリックまたはTabキーまたはEnterキー)を選択すると、その行の余分なデータを処理したいと考えています。私はresult()デリゲートでこれを行います。

私は、上記のコードが今後も他の人たちを助けて、オートコンプリートを理解することを本当に願っています。もしそうなら、私に投票の上を与えてください。

ヒント:プロパティ名data [i] .Dataおよびdata [i] .Nameは、JSONプロパティ名です。

答えて

2

この時点で(オートコンプリート1.1pre)、プラグインのコードを変更せずに投稿できるようにする方法はありません。

私は今すぐクエリーストリングを提出しました。答えてくれてありがとう、私は投票をアップしました。

1

''すべて '' jquery ajax呼び出しのデフォルトをpostに設定し、必要なスクリプトでそれらを上書きすることができます。オーバーライドは、おそらくあなたのコードの先頭にこれを置いてみ...だけでなく、このために動作します:

$.ajaxSetup({ 
    type: 'POST' 
}); 

あなたは、通常の$.ajax/$.post/$.getのいずれかのオプションのデフォルトを設定する$.ajaxSetup()コールを使用することができます。私はそれが助けて欲しい

+0

私は今週末にこの作業をやり直しています(これはGETを使用しているので動作しています)。お知らせいたします。 – eduncan911

+0

動作しませんでした。オートコンプリートは、後のバージョンのjQueryに含まれる予定で、内部動作の変更について説明しています。うまくいけば、AJAXをサポートする。私はquerystringsを使うように変更しました。 – eduncan911

関連する問題