【问题标题】:tokeninput not showing dropdown令牌输入未显示下拉菜单
【发布时间】:2013-04-25 06:15:44
【问题描述】:

处理从 WCF 以 json 格式获取员工的自定义控件。下面是代码

 $("#" + txtEmployeeInput).tokenInput(urlService + '/GetEmployeesForTokenInput', {
                        prePopulate: selectedEmployeesForTokenInput,
                        preventDuplicates: true,
                        tokenLimit: 1,
                        hintText: "Type to select employees",
                        noResultsText: "No employees found!",
                        searchingText: "searching in employees...",
                        onAdd: function (item) {
                        },
                        onDelete: function (item) {
                        },
                        theme: "facebook"

                    });

现在这项服务

urlService + '/GetEmployeesForTokenInput'

以下列格式返回员工(JSON 数组字符串)

"[{\"id\":\"4173\",\"name\":\"TAHA  SIDDIQUI\"},{\"id\":\"a1234\",\"name\":\"TAHA REHMAN SIDDIQUI\"},{\"id\":\"70007\",\"name\":\"TAHA SANDAM SIDDIQUI\"},{\"id\":\"57880\",\"name\":\"TAHA SANDAM SIDDIQUI\"},{\"id\":\"4333\",\"name\":\"TAHA  HASAN\"},{\"id\":\"555-12\",\"name\":\"TAHA REHMAN SIDDIQUI\"},{\"id\":\"49200\",\"name\":\"TAHA  -\"},{\"id\":\"1645\",\"name\":\"TAHAN A RICE\"},{\"id\":\"5253\",\"name\":\"TAHFAREN LAWRENCE OWENS\"},{\"id\":\"57881\",\"name\":\"Tahir  Ali\"},{\"id\":\"563r44\",\"name\":\"TAHIR  MALIK\"},{\"id\":\"52612\",\"name\":\"TAHIR  MUJAHID\"},{\"id\":\"34115\",\"name\":\"TAHIRA  -\"},{\"id\":\"18665\",\"name\":\"TAHIRA AQUIB HUSSAIN\"}]"

现在,通话已成功,下面的屏幕截图大致说明了我面临的问题。

下拉菜单未显示。现在我怀疑这是因为结果是 JSON 而不是 javascript 数组,现在如果这是一个问题,任何人都可以建议我在哪里将字符串转换为代码中的数组。

WCF 代码

    [OperationContract]
    [WebGet(UriTemplate = "GetEmployeesForTokenInput?q={value}",
       ResponseFormat = WebMessageFormat.Json,
       RequestFormat = WebMessageFormat.Json,
       BodyStyle = WebMessageBodyStyle.Bare)]
    string GetEmployeesForTokenInput(string value);

public object GetEmployeesForTokenInput(string value)
    {
        WebOperationContext.Current.OutgoingResponse.Headers.Add(
"Access-Control-Allow-Origin", "*"); WebOperationContext.Current.OutgoingResponse.Headers.Add(
"Access-Control-Allow-Methods", "GET"); WebOperationContext.Current.OutgoingResponse.Headers.Add(
"Access-Control-Allow-Headers", "Content-Type, Accept");
        Employee employee = new Employee();
        employee.FullName = value;
        EmployeeManagement empMgmt = new EmployeeManagement();
        int temp;
        List<Employee> employees = empMgmt.Search(employee, 0, 0, out temp);
        var jsonData =
                from row in employees
                select new
                {
                    id = row.TRGEmpID,
                    name = row.First_Name + " " + row.Middle_Initial + " " + row.Last_Name
                };
        return (new JavaScriptSerializer()).Serialize(jsonData);
    }

【问题讨论】:

  • 您的 json 是否与您发布的这些 \" 完全相同?
  • 您的回复是string 还是json?如果是string,则需要使用JSON.parse()
  • 你定义了一个prePopulate属性,selectedEmployeesForTokenInput的内容是什么?
  • 在你的截图中看起来像字符串
  • @WingLeong 上面是返回的确切字符串

标签: javascript jquery json jquery-tokeninput


【解决方案1】:

当我试图通过 JSON 字符串运行它时,该插件实际上需要一个具有属性 id 和 name 的对象数组。所以我修改了

function populate_dropdown(query, results)

并在函数开始时添加它

results = $.parseJSON(results);

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 2021-11-05
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多