2010-08-04 51 views
1
(ASMX)

我有一個jqGrid的設置後使用應用程序/ JSON的內容類型的URL:的jqGrid調用WebService的使用JSON

$("#jqCategoryGrid").jqGrid({ 
    datatype: "json", 
    mtype: 'POST',   
    url: "Webservices/TroubleTicketCategory.asmx/getCategoryData", 
    ajaxGridOptions: { contentType: 'application/json; charset=utf-8' }, 
    // **UPDATE - This is the fix, as per Oleg's response** 
    serializeGridData: function (postData) { 
     if (postData.searchField === undefined) postData.searchField = null; 
     if (postData.searchString === undefined) postData.searchString = null; 
     if (postData.searchOper === undefined) postData.searchOper = null; 
     //if (postData.filters === undefined) postData.filters = null; 
     return JSON.stringify(postData); 
    }, 
}); 

的問題是,jqGrid的仍試圖通過參數使用非json格式,所以我得到一個錯誤「無效的JSON原始」

有沒有辦法指示jqGrid使用Json序列化數據?

感謝

UPDATE

我編輯我的問題提供的源代碼,包括我以前的修復,這些來自以下奧列格的響應。

回答

2

你應該包括,例如,相對於json2.js的發佈的數據可以從http://www.json.org/js.html下載的JSON序列:

serializeRowData: function (data) { return JSON.stringify(data); } 
+0

我該怎麼辦呢?從所有我可以看到,jqGrid是黑盒子,並在後臺處理所有數據序列化。是否有方法或屬性或我可以指定在網格的init中指示它執行此操作? – bugfixr 2010-08-05 01:06:29

+0

我不明白你的問題。在http://stackoverflow.com/questions/2675625/setting-the-content-type-of-requests-performed-by-jquery-jqgrid/2678731#2678731我展示了一個使用'serializeRowData'的jqGrid代碼片段。就此功能而言,您可以在發送到服務器的數據下進行完全控制。你有一個數據對象,數據將被髮送,你可以在字符串中進行轉換,而不受限制。此外,jqGrid的完整代碼可以免費下載並學習其他一些功能。所以它不是一個黑盒子。這是一個我看到的開放盒子。 – Oleg 2010-08-05 01:27:01

+0

您發送的引用URL包含答案。我會更新我的帖子以反映這一點。 還有一個問題 - 有沒有辦法讓我的表單編輯序列化數據?它似乎沒有使用與主加載方法使用的相同的「serializeGridData」。 – bugfixr 2010-08-05 14:59:35