2010-07-02 44 views
0

我從jQuery網站上讀到,get()使用HTTP GET請求從服務器加載數據。但這一解釋並不足夠,如用於例如我在下面提供:jQuery get()方法 - 不確定它在接收的參數中做了什麼

只給我的問題有些情況下,當我們的兩個參數值賦值給一個變量expoptions:

var expoptions = $.extend(defaults, options); 

默認參數是對象文本未在選項參數定義的默認的鍵/值對:

$.fn.explorerGrid = function(options) { 
var defaults = { 
    order: 'make', 
    page: 1, 
    id: 0, 
    per_page: 20, 
    url: "/honda", 
    additional: function(){return {ololo:'trololo'};}, 
}; 

options參數是一個對象文字作爲參數傳遞的鍵/值對當explorerGrid()方法被調用:

Honda.prototype.explorer_create=function(){ 
var component = this; 
this.opts_exp = { 
    order: this.default_order_str, 
    url: "/"+this.resource_url_str, 
    additional: function(){return component.filter_func();} 
}; 
jQuery(this.exp_id).explorerGrid(this.opts_exp); //exp_id is just a div container that holds a table we intend to populate with data 

然後,我們遍歷我們的本田對象的對象文字,指定per_page(例如, 20),順序(如「化妝」),頁面(例如:1)我們expoptions的反對一些全局變量:

return this.each(function() { 
var expobj = $(this); 
var params = { 
    per_page: expoptions.per_page, 
    order : expoptions.order, 
    page : expoptions.page, 
}; 

----那部分我不明白----當我們調用在get()方法中,我們傳入了一些參數,其中一個是expoptions.url(例如'/ honda'),params(它保存了一個鍵/值對的對象字面量,用於指定我們想要如何填充表,它也包含來自additional()方法的另一個對象字面量,它包含過濾條件的鍵/值對,例如:'Year:2008','Make:Honda'),然後我們調用一個函數,該函數看起來是一個匿名函數,傳入一個名爲data的參數,我不知道這是從哪裏來的,因爲像我說過的,這個函數似乎沒有在任何地方定義過,然後它調用expobj對象的html()方法,whic h是我們的對象,比如Honda,並且拉入那個數據參數。我不確定get()方法應該用這三個參數來做什麼:expoptions.url,params,function(data)。如果有人知道get()方法用這些參數做什麼,我會感謝一些解釋:

jQuery.get(expoptions.url, 
params, 
function(data) 
{ 
    expobj.html(data); 


    expobj.find("tr th.sortable").click(function(){ 
     if($(this).hasClass('sortedasc')){ 
      expoptions.order = "-" + $(this).attr('id');} 

     if($(this).hasClass('sorteddesc')){ 
      expoptions.order = $(this).attr('id');} 

     if(!$(this).hasClass('sorteddesc') && !$(this).hasClass('sortedasc')) { 
      expoptions.order = $(this).attr('id');} 
     expoptions.find_page_for_resource = 0; 
     expobj.explorerGrid(expoptions); 
    }); 

    expobj.find("#gridpage").change(function(){ 
     expoptions.page = 1; 
     expoptions.per_page = $(this).val(); 
     expobj.explorerGrid(expoptions); 
    }); 

);

感謝您的回覆。

回答

1

簡單地說,第三個參數.get,其與

function(data) 
{ 
    expobj.html(data); 

由一旦HTTP GET請求結束瀏覽器調用開始匿名函數,並且它被稱爲與響應主體,因此data參數。

expoptions.url告訴它從哪裏獲取數據,而第二個參數用於構建「查詢字符串」,「?foo = bar & this = that」。

+0

我使用Google搜索響應正文。我得到的只是IE7中引入的一個responseBody屬性的微軟定義。很難概念化反應機構是什麼。 – JohnMerlino 2010-07-03 12:48:11

+0

只需要確認一下,我們發送url'honda.part'到服務器,然後查詢字符串?year = 2008&color = red的附加參數,現在一旦這個http請求(url和查詢字符串)發送到服務器,像PHP這樣的腳本接受這些信息,做一個sql查詢,然後返回參數數據中的結果,並且html()jquery方法會將該響應轉換爲html? – JohnMerlino 2010-07-03 13:43:21

+0

「data」本質上是responseText,它包含發送到服務器腳本的查詢字符串中指定的mysql查詢的結果? – JohnMerlino 2010-07-03 14:03:32

0

.get()需要的3個參數用於1.您正在獲取的網址。 2.你想發送到網址的參數。 3.當你獲得的頁面完成加載時你想運行的功能

該函數傳遞3個參數,你調用的結果數據是你所做的調用和XMLHttpRequest請求對象的文本狀態,例如function(data, textStatus, XMLHttpRequest);

如果您使用.get()調用的URL重新調用數據,則需要編寫的函數有data

+0

「data」本質上是responseText,它包含發送到服務器腳本的查詢字符串中指定的mysql查詢的結果? – JohnMerlino 2010-07-03 14:04:04

+0

正如有人所說,「數據」是您發送請求的頁面的響應正文(文本)。 – Nalum 2010-07-05 09:55:08

相關問題