【问题标题】:jQuery UI Autocomplete Responce DatajQuery UI 自动完成响应数据
【发布时间】:2015-12-28 21:16:27
【问题描述】:

我在访问自动完成框的脚本提供的 JSON 数据时遇到了一些问题,想知道是否有人可以提供帮助。

这是处理自动完成框的 Javascirpt 代码:

$(function() {
             $("#student_search").autocomplete({
                  source: "functions/find_student.php",
                  delay: 100,
                  minLength: 1,
                  select: function(event, ui) {

                      student_result = ui;

                      $('#student_search').val(student_result[0].label);
                      highlightStudent(student_result.label, student_result.value.id, student_result.value.house);
                  }
            }); 
         });

响应的一个例子是:

[{"label":"larry winkles","value":{"id":1,"house":"s"}}]

当数据被发送回自动完成代码的成功部分时,我正在努力找出如何访问该数据。具体来说,当我点击名称时,我得到的错误是:

Uncaught TypeError: Cannot read property 'label' of undefined

感谢您的帮助。

亚历克斯

【问题讨论】:

    标签: javascript jquery jquery-ui autocomplete


    【解决方案1】:

    你试过这样吗:

    select: function(event, ui) {
       var label = ui.item.label;
       var value = ui.item.value;
    }
    

    如有任何疑问,请告诉我。

    【讨论】:

    • 谢谢,但就像它返回 [Object object] 作为结果的所有内容一样。编辑:事实证明它确实有效,但由于某种原因,它将文本框值设置为 [Object object] 并让其他一切正常工作!我检查我没有使用任何分配的变量名或任何东西,但我确定我没有。无论如何,这是一个新问题,所以我要说声谢谢并尝试解决它:)谢谢大家!
    【解决方案2】:

    我对 ui 变量的性质有疑问,如果您使用的是 Firefox,可以使用 console.info(ui) 进行检查。

    我想问题出在:

    highlightStudent(student_result.label, student_result.value.id, student_result.value.house);
    

    替换:

    student_result
    

    作者:

    student_result[0]
    

    【讨论】:

    • 谢谢你,但遗憾的是它给了我同样的错误:(
    • 如果变量ui是String类型,则可以通过student_result = eval(ui);将其转换为数组
    • 变量 UI 是 tpye JSON 数据,来自 json_encode($result); php 行。
    • json_encode($result); 返回代表 json 数据的字符串。毕竟,它是 String 类型的。您必须对其进行解析才能获得 JSON 数据的 javascript 表示。代码可能是这样的:var myObject = eval("(" + myJSONtext + ")");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    相关资源
    最近更新 更多