2009-07-11 61 views
1

的jQuery 1.2.6jQuery Autocompleter如何使用POST?

jQuery.autocompleter插件v1.1pre(從jQuery的網站)

我不能用 '類型: 「POST」' 提交回我的web服務。我無法讓它被autocompleter識別。思考?

下面的代碼工作正常,只要我查找「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回從WebService
  • 自動完成無法處理原生JSON,所以我必須把它解析爲我自己的數組。
  • 因爲我現在傳回一個自定義數組對象,所以需要覆蓋formatItem以便處理新的數組對象以用於顯示目的。
  • 最後,我要在用戶選擇一個行(鼠標單擊或TAB或ENTER鍵)後處理該行上的額外數據。我用result()委託來做這件事。

我真的希望上面的代碼可以幫助其他人在將來弄清autocompleter。如果有,請給我一個表決權。

提示:屬性名稱data [i] .Data和data [i] .Name是JSON屬性名稱。

回答

2

此時(Autocompleter 1.1pre),沒有辦法讓它發佈而不更改插件的代碼。

我剛剛離開它現在提交querystrings。謝謝大家的回答,我提高了投票率。

1

您可以將所有''jquery ajax調用的默認設置爲post,然後在任何想要的腳本中覆蓋它們。該倍率可能是這方面的工作,以及...試着在你的代碼的頂部放置此:

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

可以使用$.ajaxSetup()呼叫設置默認值對於任何正常$.ajax/$.post/$.get選項。我希望有所幫助。

+0

我會在本週晚些時候嘗試這個時候,當我回到這個任務(因爲它工作,現在使用GET)。我會讓你知道的。 – eduncan911 2009-07-13 12:42:22