jsonfing 选择框选项

发布于 2024-12-11 12:21:59 字数 892 浏览 0 评论 0原文

我有一个服务器端查询,它通常生成表单中的所有选择框选项

<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);
      }
    });
 },

现在我尝试了各种格式,唯一的方法看起来像使用 regexp 是唯一的方法。我不能将 html 返回变量作为 jquery 变量处理吗,我可以说 $this.val() + this.text()

I've a server side query which generically generated all select box options in the form

<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>

Now I want to convert all of this to a format that jqgrid understands for its dropdowns. i.e. {1:text1, 2:text2....} Condition is that I would not touch the server side code. I need to modify it here at client side by adding a generic function. Now I get this through an jquery ajax call

 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);
      }
    });
 },

Now I tried various formats, the only way looks like using regexp is the only way. Can't I handle the html return variable as a jquery variable, where I can say $this.val() + this.text()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

野鹿林 2024-12-18 12:21:59

如果您的服务器可以在

如果您的服务器只能生成没有的列表code> 并且您无法更改服务器端的行为,您可以使用 buildSelect 来解决问题:(

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

如果使用旧版本的 jqGrid,可能需要测试 typeof(data) 和使用 datadata.responseText

还可能需要使用 ajaxSelectOptions: { cache: false } (请参阅 此处

If your server can generate the list of <options> inside of <select> you can use directly dataUrl in the editoptions or searchoptions.

If your server can only generate the list of <options> without <select> and </select> and you can't change the behavior on the server side you can use buildSelect to fix the problem:

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

(in case of usage of old version of jqGrid it could be required to test the typeof(data) and use data or data.responseText)

The usage of ajaxSelectOptions: { cache: false } could be also required (see here)

落花随流水 2024-12-18 12:21:59

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

尝试以下操作:

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

jsfiddle 上的示例

To use find the returned html needs a valid root element.

Try the following:

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

Example on jsfiddle

暗恋未遂 2024-12-18 12:21:59
var obj;
$('option').each(function (i,n){
   obj[i] = $(n).text();
});

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

我认为应该这样做,但修复选择器,以便您有#select_tag_id选项

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

console.log(obj);//outputs your info... on your console

I think this, should do it, but fix the selector so u have #select_tag_id option

迷爱 2024-12-18 12:21:59

这很安静,很容易。一个简单的技巧

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

/* jqgrid select options format */

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

谢谢你的回答

it was quiet easy. A simple trick did

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

/* jqgrid select options format */

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

Thank you for your answers

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文