Multiselect jQuery中JSON的来源

6
我有一个jQuery的多选框,我想从JSON中获取源代码。我从我的自动完成组合框中取得了源代码,但在这里它不起作用。
我的代码:
 $(document).ready(function () {
        var warning = $("#message");
        $("select").multiselect({
            //selectedText: function (numChecked, numTotal, checkedItems) {
            //    return numChecked + ' of ' + numTotal + ' checked';
            //},
            source: function (request, response) {
                $.getJSON('http://' + $("[id$='ip']").val() + "/JSON/Auctocomplete.aspx?city=1&term=" + request.term, function (data) { response(data); });
            },
            select: function (event, ui) {
                $("#mfr").textContent = ui.item.id;
            },
            selectedList: 5,
            header: "choose up to 5",
            click: function (e) {
                if ($(this).multiselect("widget").find("input:checked").length > 5) {
                    warning.addClass("error").removeClass("success").html("choose up to 5");
                    return false;
                } else {
                    warning.addClass("success").removeClass("error").html("");
                }
            }
        });
    });

1
我曾经遇到过类似问题,使用YQL解决了——请访问https://dev59.com/WmjWa4cB1Zd3GeqPvOmE#12941673,看看这个是否有帮助。 - Selvakumar Arumugam
2个回答

7
这是因为同源策略的原因。你不能使用ajax调用外部网站。如果你真的想使用,你必须使用JSONP。或者你可以使用服务器端代理来实现。也就是,在服务器端调用外部网站,然后对该web服务进行ajax调用。 更多信息请参考此链接

3

我搜索了一下,我认为Jquery多选框没有source属性。可以看看http://www.erichynds.com/blog/jquery-ui-multiselect-widget 。你确定它有source属性吗?

我建议你先从json加载选择项,然后将其转换为多选框。

// The empty select element:
<select></select>

// In javascript:
$(document).ready(function () {
     var url = 'http://...';

     $.getJSON(url,function(result){
               $.each(result, function(i, field){
                      var option = $('<option value="' + field.value + '">' + field.text + '</option>');
                      $('select').append(option);
               });

               $('select').multiselect({...});
     });
});

如何将选择框转换为多选框?以及如何将 JSON 数据加载到选择框中? - Chani Poz
$("select").multiselect({ ... 就像你所做的那样,将 select 转换为 multiselect。在此之前,您应该使用 JavaScript 用 json 数据填充 select 元素。 - serefbilge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接