2011-10-20 88 views
0

我有这一般发生在表单中的所有选择框选项jsonfying选择框中选择

<option val='1'> text1 </option> 
<option val='2'> text2 </option> 
<option val='3'> text3 </option> 
<option val='4'> text4 </option> 
<option val='5'> text5 </option> 

现在我想所有这一切都转换为jqGrid的理解其下拉菜单中的格式的服务器端查询。即{1:text1,2:text2 ....}条件是我不会碰到服务器端代码。我需要通过添加一个通用函数在客户端修改它。现在,我通过一个jQuery的AJAX调用

getGridDropDown: function (url) { 
     $.ajax({ 
     type: "GET", 
     url: url, 
     dataType: "html", 
     success: function (html) { 
     $(html).find('option').each(function(key){ 
      alert(key) 
     }) 


     }, 
     error: function() { 
     console.log("Error in ajax call to url: " + url); 
     } 
    }); 
}, 

现在,我尝试过各种形式得到这一点,唯一的办法看起来像使用正则表达式是唯一的出路。我不能作为一个jQuery变量处理HTML返回变量,在那里我可以说$ this.val()+ this.text()

+0

请问您的AJAX调用返回只有'

+0

只有选项..! –

+0

@SaiKrishna好吧,如果任何答案有效,请打勾:) – Val

回答

1

如果您的服务器可以在<select>中生成<options>的列表,则可以在editoptionssearchoptions中直接使用dataUrl

如果您的服务器只能生成的<options>列表而不<select></select>,你不能改变在服务器端的行为,你可以使用buildSelect来解决这个问题:

editoptions: { 
    dataUrl: 'yourUrl', 
    buildSelect: function (data) { 
     return "<select>" + data + "</select>"; 
    } 
} 

(以老版本的jqGrid它的使用情况下,可能需要测试typeof(data)和使用datadata.responseText

ajaxSelectOptions: { cache: false }的使用可能也是必需的(见here

+0

谢谢你的回答。 –

+1

@Sai Krishna:不客气!你试过这个吗?它在你的环境中工作吗? – Oleg

+0

太棒了,我试过了。它比我的修复更好。我的修补程序添加了undefined作为其中一个参数 –

1

要使用查找返回的html需要一个有效的根元素。

尝试以下操作:

$("<div/>").append(data).find('option') 

Example on jsfiddle

+0

谢谢你的回答 –

1
var obj; 
$('option').each(function (i,n){ 
    obj[i] = $(n).text(); 
}); 

的console.log(OBJ); //输出你的信息...您的控制台上

我觉得这,应该这样做,但修复选择器,让你有#select_tag_id option

+0

谢谢你的回答 –

0

它很安静容易。一个简单的技巧做

getGridDropDown: function (url) { 
     $.ajax({ 
      type: "GET", 
      async:false, 
      url: url, 
      dataType: "json", 
      success: function (html) { 
      data = new String(); 
      $(html).each(function(key){ 

/* jqGrid的选择选项格式*/

 data += this.value +":"+this.label+";"; 
      }) 
      gridParams['data'] = data  
      }, 
      error: function() { 
      console.log("Error in ajax call to url: " + url); 
      } 
     }); 
    }, 

谢谢你的答案