2009-11-14 25 views
0

我正在嘗試使用ASP.Net Web服務中的數據填充Dojo網格。將會有很多行,所以我想在服務器端實現分頁,因此Web服務將接受參數「start」和「count」。我已經非常接近了,通過使用QueryReadStore並重寫「fetch」函數來添加其他參數(Web服務不僅僅需要啓動和計數)。如何使用ASP.Net Web服務中的數據填充分頁的Dojo.Grid?

我遇到的直接問題是Web服務將數據作爲XML返回。我相信這是因爲請求不包含指示json偏好(網格需要)的Content-Type頭。我正在使用Http-Post而不是默認的Get。是一個ResponseFormat屬性應該覆蓋這個?它不適合我。

那麼,我如何獲得數據爲json?或者,我是否在吠叫錯誤的樹?將網格和Web服務粘合在一起似乎是一件非常常見的事情。 Dojo是否有任何內置功能,我只是不知道?

感謝

回答

1

你應該能夠簡單地設置您的來電dojo.xhrPost(..)"xml"handleAs參數,這將綁定XML的JavaScript對象,使您的生活更輕鬆,同時處理數據:

dojo.xhrPost({ 
    url: "http://whatever.com/someendpoint", 
    handleAs: "xml", 
    load: function(response, ioArgs){ 
     /* 
     * Do something with response, it's a JS object that reflects the XML. 
     */ 
    } 
});

或者,你可以選擇你的AJAX調用使用參數對象的headers屬性dojo.xhrPost(..)發送不同的HTTP頭:

dojo.xhrPost({ 
    url: "http://whatever.com/someendpoint", 
    handleAs: "json", 
    headers: { 
     "Accept" : "text/javascript, text/json, application/json, application/javascript" 
    }, 
    load: function(response, ioArgs){ 
     /* 
     * Do something with response, it's a JS object that reflects the JSON. 
     */ 
    } 
});
+0

看起來好像它會允許dojo處理xml返回數據,但是它如何適應dojo網格的自動分頁?在上下文中,我從http://www.linuxjournal.com/article/10380結尾開始。看起來我應該避免對Web服務進行顯式調用,而只是操作請求對象。像你所建議的那樣向它添加標題似乎沒有做到,儘管我可能沒有做到這一點。 – bmm6o 2009-11-16 17:56:44

+0

調用dojo.xhrPost會請求數據的每個單獨的頁面...所以他們會自動返回您的獲取函數內的正確頁面。如果你想在一個AJAX請求中獲取所有的數據(所有頁面),你將冒着破壞分頁目的的風險(通過等待巨大的響應回來) – JasonWyatt 2009-11-16 18:22:21

+0

添加接受標題didn'不要做詭計。 Firebug顯示它是作爲請求的一部分發送的,但數據仍以xml形式返回。據我所知,手柄也沒有做任何事情。響應對象只是作爲Xml DOM返回,而不是網格能夠使用的任何類型的集合。此外,從我所知道的情況來看,我最好不要從我的抓取覆蓋中調用xhrPost。 http://docs.dojocampus.org/dojox/data/QueryReadStore使我聽起來好像我應該在完成時調用基本版本,當我看它時,它會添加成功和失敗處理程序。 – bmm6o 2009-11-16 21:45:43

相關問題