【问题标题】:No explanation "Uncaught Error: Syntax error, unrecognized expression: " [duplicate]没有解释“未捕获的错误:语法错误,无法识别的表达式:” [重复]
【发布时间】:2025-11-26 16:25:02
【问题描述】:

我正在尝试实现自动完成。

我有一个类似的问题

未捕获的错误:语法错误,无法识别的表达式:

这是我的代码。

<script>
$(function(){
    $('.search').keyup(function(e){
        var input = $(this).val();
        $.ajax({
            type: "get",
            url: "class/contact/get_contact_list.php",
            data: {"current_user_id" : window.USER_DATA.USER.id_user, "type" : "verify", "search": input},
            async: true,
            success: function(data){
                var outWords = $.parseJSON(data);
                $('.data_contact').html('');
                $('.data_contact').prepend($(Chat.append_into_contact_list(outWords,'search')));
                // $('.data_contact').prepend('<div>'+input+'_'+outWords.response.length+'</div>'); //Fills the #auto div with the options
                //$('.data_contact').append($(Chat.append_into_contact_list(outWords,'search')).delay(220).fadeTo('slow',1));
                console.log(outWords);
            }

        })
    })
});
</script>

我认为这是$('.data_contact').prepend($(Chat.append_into_contact_list(outWords,'search'))); 中的错误。

谁能提出问题的原因?

【问题讨论】:

  • data实际 值是多少?很有可能并不像预期的那样。 不要使用警报;使用控制台/调试器,可能还有网络监视器。
  • 当你说 alert(data) 而不是 alert(outwords.length) 时你看到了什么?
  • 对不起,我复制旧代码。我这样实现 $('.data_contact').prepend('
    '+input+'_'+outWords.length+'
    ');而 outWords 是没有数量的。
  • 这仅仅意味着对象outWords没有length属性。问题是您试图访问不存在的属性。不要那样做。您只能访问存在的属性。
  • 哦,我明白了。谢谢回答。我会学到更多。

标签: javascript jquery autocomplete


【解决方案1】:

parseJSON 将一个字符串(有长度)解析为一个对象——它不一定有长度

【讨论】:

  • 但错误是 outWords 评估为 undefined.. 读取不存在的属性没有问题;但无法读取undefined 值的属性。
  • 是的,outWords.length 是未定义的
  • @user2864740 - 不,outWords.length 未定义
最近更新 更多