2012-02-02 1 views
1

У меня есть строка:jqgrid - как добавить параметры extraparam в saveRow в режиме редактирования встроенного

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": {} 
    }); 
} 

То, что я хочу сделать

Я хочу

  • разбить строку на основе белого пространства
  • каждое слово в строке (после разделения его) должен быть передан в качестве параметра в extraparam так, что он получает добавляется к URL ,

Я не знаю, как это сделать.

Согласно предложению Олега (см. Ниже), добавлено в ajaxRowOptions: {cache: false} в моем определении jqgrid.

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

Формат 'extraparam' такой же, как формат' postData': вы - это объект, который имеет такие свойства, как {property1: 'value1', property2: 'value2'}. Поэтому вы должны определить в своем вопросе не только значения («каждое слово в строке»), но и имена свойств. Кроме того, вы написали, что значения должны быть «добавлены к URL». Значения будут добавлены к URL-адресу только в том случае, если вы используете HTTP GET, а не в случае HTTP POST, например по умолчанию. – Oleg

+0

Кроме того, вы используете '' url ": server.aspx', который является синтаксической ошибкой. Необходимо указывать «server.aspx» и «quoated» является ли «url» неважным. Поэтому вы должны использовать 'url: 'server.aspx'',' url: "server.aspx" или '" url ":" server.aspx "вместо" url ": server.aspx'. – Oleg

+0

@Oleg: Я знаю формат 'extraparam', и я использую' GET'. Я не знаю, как назначить значения и разные имена свойств после разделения строки. Есть ли способ написать функцию и пропустить через них, а затем назначить их. Я пытался это сделать, но он не работает. – techlead

ответ

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

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

+1

@ SK11: Добро пожаловать! Поскольку вы используете 'mtype:" GET ", вы можете получить проблемы с кешированием запросов Ajax в IE. Поэтому я рекомендую вам использовать параметр 'ajaxRowOptions: {cache: false}' параметра jqGrid. – Oleg

+0

Спасибо. Я добавил в параметр, а также обновил свой пост. – techlead

Смежные вопросы