代码之家  ›  专栏  ›  技术社区  ›  Glyn

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

  •  0
  • Glyn  · 技术社区  · 7 年前

    我正在从mySQL表中读取行,并将它们返回到jQuery以显示(使用HTML、bootstrap)供用户输入值。当用户更新该值时,jQuery将捕获该操作,并返回该值以在表中更新(因此我需要该行的键来更新正确的行)。

    因此,用户不能更改密钥,并且在表中更新了不同的(错误的)行,我在将行密钥发送到jQuery之前对它们进行加密。我使用行的键作为每个HTML行的id,这样每个行都有一个唯一的id,并且我知道哪个已更新。

    //Loop for each encoded_task_detail_ID
    String summer = "ta" + encoded_task_detail_ID;
    <textarea class='summernote col-lg-12 col-md-12 col-sm-12 col-xs-12' id="+ summer +" name='ymSpecificLine' rows='1'>
    //end loop
    

    有些行是name='ymSpecificLine',有些行不是。因此,在jQuery中,我检查:

    var taKey = "#ta" + val_awardDetailID;
    
    var val_ymSpecific = "N";
    var val_ymSpecificLine = "";
    alert("1");
    if ($(taKey).attr('name') === "ymSpecificLine"){ //I have tried == here as well
        alert("2"); //Not displayed when error occurs
        val_ymSpecific = "Y";
        val_ymSpecificLine = $(taKey).val();
    };
    

    如果密钥(val_awardDetailID-与编码的_task_detail_ID相同)为“Nzly”,则此操作有效。但是,当键为“MjM5MQ==”时,出现控制台错误:

    Uncaught Error: Syntax error, unrecognized expression: #taMjM5MQ==
    

    我认为这可能与它以“==”结尾有关,所以我添加了一个“A”来表示“#taMjM5MQ==A”。但是,返回了相同的错误。

    2 回复  |  直到 7 年前
        1
  •  1
  •   sridhar    7 年前

    jQuery选择器的工作方式与CSS选择器类似。 #taMjM5MQ== 不是有效的选择器。

    https://jsfiddle.net/reddysridhar53/hzycv82d/2/

        2
  •  1
  •   Meow Cat 2012    7 年前

    使用 \\=\\= == ,其中包含转义字符 = . 比如: #taMjM5MQ\\=\\=A

    并以代码取代: taKey = taKey.split('=').join('\\=')
    虽然这不是很有效,但在互联网上有许多更好的“replaceAll”实现。

    (抱歉,两天没有在线)