2012-02-02 29 views
1

我有一個字符串:的jqGrid - 如何將參數添加到saveRow的extraparam在在線編輯模式

var str = "it's a beautiful day"; 

我傳遞這個字符串的函數:

rowSave(id, str); 

rowSave()

var rowSave = function(id, str){ 
    jQuery("#myjqgrid").jqGrid('saveRow',id,{ 
     "succesfunc": function(response) {    
      return true;     
     },         
     "url": "server.aspx", 
     "mtype": "GET", 
     "extraparam": {} 
    }); 
} 

我想要做什麼

我想

  • 分割字符串基於空白
  • 字符串中的每一個字(分裂之後)應作爲一個參數,以便它被附加到URL來傳遞extraparam

我不知道該怎麼做。

根據Oleg的建議(見下文),在我的jqgrid定義中的ajaxRowOptions: {cache: false}中加入。

$("#myjqgrid").jqGrid({ 
    ajaxRowOptions: {cache: false} 
}); 
+0

'extraparam'的格式與'postData'的格式相同:你的值是具有{property1:'value1',property2:'value2'}等屬性的對象。所以你應該在你的問題中不僅定義值(「字符串中的每個單詞」),還要定義屬性的名稱。此外,你寫道,值應該「附加到URL」。只有在使用HTTP GET的情況下,這些值纔會附加到URL,而不是HTTP POST的情況下,例如默認值。 – Oleg 2012-02-02 06:18:51

+0

另外你使用''url「:server.aspx',這是一個語法錯誤。 'server.aspx'應該被引用,並且'url'是否被佔用並不重要。所以你應該使用'url:'server.aspx'','url:「server.aspx」'或'「url」:「server.aspx」'而不是''url「:server.aspx'。 – Oleg 2012-02-02 06:50:38

+0

@Oleg:我知道'extraparam'的格式,我正在使用'GET'。在分割字符串後,我不知道如何分配值和不同的屬性名稱。有沒有辦法編寫一個函數並循環遍歷它們,然後分配它們。我嘗試過,但它不起作用。 – techlead 2012-02-02 14:14:31

回答

1

可以定義類似於以下以建立額外的參數對象的函數:

function encodeStr(str){ 
    var s = str.split(' '), i, result = {}; 

    for (i = 0; i < s.length; i++){ 
     result['param' + i] = s[i]; 
    } 

    return (result); 
} 

jQuery.ajax由jqGrid的內部使用,可確保正確的序列化。如果遇到問題,請使用encodeURIComponent對每個參數進行編碼。

無論如何,然後就打電話到該對象時,您指定的參數:

"extraparam": encodeStr(str) 
+0

非常棒。這正是我所期待的。非常感謝你:) – techlead 2012-02-02 14:51:51

1

的代碼可以瞭解以下信息:

var rowSave = function(id, str) { 
    var strParts = str.split(' '), l = strParts.length, i, obj = {}, 
     codeStart = 'A'.charCodeAt(0); // 65 

    for (i = 0; i < l; i++, codeStart++) { 
     obj[String.fromCharCode(codeStart)] = strParts[i]; 
    } 
    $("#myjqgrid").jqGrid('saveRow', id, { 
     succesfunc: function(response) { 
      return true;     
     },         
     url: "server.aspx", 
     mtype: "GET", 
     extraparam: obj 
    }); 
} 

首先obj會被填上{A: "it\'s", B: "a", C: "beautiful", D: "day"}然後它將被用作extraparam的值。

+0

謝謝你的時間和迴應。 – techlead 2012-02-02 14:54:45

+1

@ SK11:不客氣!因爲你使用mtype:「GET」,你可能會在IE中緩存Ajax請求時遇到問題。所以我建議你使用jqGrid的'ajaxRowOptions:{cache:false}'參數。 – Oleg 2012-02-02 14:57:19

+0

謝謝。我在參數中添加並更新了我的帖子。 – techlead 2012-02-02 15:12:07

相關問題