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("");
                }
            }
        });
    });
4

2 回答 2

7

这是因为同源政策。您不能使用 ajax 调用外部站点。如果你真的想使用,你必须使用JSONP。或者您可以为此使用服务器端代理。意思是,在服务器端调用外部站点并对那个 web 服务进行 ajax 调用。

有关更多信息,请参阅此链接

于 2013-04-28T11:19:03.087 回答
3

我搜索了,我认为Jquery 多选没有源属性。看看http://www.erichynds.com/blog/jquery-ui-multiselect-widget。您确定它有源属性吗?

我建议你,首先从 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({...});
     });
});
于 2013-05-01T08:39:26.487 回答