Selectize.js无法从服务器呈现选项

时间:2014-08-20 14:34:34

标签: c# selectize.js

使用Selectize.js,我能够从服务器检索数据,但回调下拉列表中没有任何内容。也许这是数据的格式?

在服务器上,我使用System.Web.Script.Serialization.JavaScriptSerializer序列化数据表(C#)并返回JSON对象。

不知道数据未呈现的原因。

代码:

<div class="sandbox">
    <label for="select-movie">Movie:</label>
    <select id="select-movie" class="movies" placeholder="Find a PO..."></select>
</div>

<script class="show">
    $('#select-movie').selectize({
    valueField: 'ID',
    labelField: 'PO',
    searchField: 'PO',
    create: false,
    options: [],
    render: {
        option: function (item, escape) {
            return '<div>' + item.PO + ' ' + escape(item.PO) '</div>';
        }
    },
    load: function (query, callback) {

        if (!query.length) return callback();

        var dataString = JSON.stringify({
        prefixText: query
        });

        $.ajax({
        type: "POST",
        url: "Default.aspx/GetUsers",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        data: dataString,
        error: function () {
            callback();
        },
        success: function (msg) {
            alert(msg.d);
            callback(msg.d);


        }
        });
    }
    });
</script>  

从服务器返回的数据:

{
    "d":"[
        {
            \"ID\":1,
            \"PO\":\"PO/REQ Number\"
        },
        {
            \"ID\":262,
            \"PO\":\"this po\"
        },
        {
            \"ID\":264,
            \"PO\":\"Test po\"
        },
        {
            \"ID\":267,
            \"PO\":\"Test PO 1\"
        }
    ]"
}

1 个答案:

答案 0 :(得分:0)

从服务器(msg.d)返回的数据是String。它必须是Array

您应该检查Default.aspx/GetUsers方法以将其返回。