Ajax Uncaught Syntax错误,无法识别的表达式:

时间:2017-09-29 12:16:26

标签: javascript php jquery mysql ajax

我不知道为什么控制台会给我这个未被删除的语法... 帮帮我吧!

$(document).ready(function() {
  $("#idval").change(function() {

    var id = $(this).val();

    $.ajax({
      url: 'verif.php',
      type: 'GET',
      data: 'user=' + id,

      success: function(server_response) {
        var session = $(server_response).html();

        if (id == session) {
          console.log($("#" + d));
        } else {
          console.log("You shall not pass!");
        }

      },
      error: function(server_response, statut, error) {
        console.log("Can't be linked !");
      }
    });
  });
});

当用户输入id时,服务器会检查数据库中是否有id。如果是,服务器返回控制台中的id,如果不是,服务器应返回" string",但它返回未被捕获的....

3 个答案:

答案 0 :(得分:5)

这一行:

var session = $(server_response).html();

没有意义。如果服务器在成功时回复ID,则只需直接使用server_response

  success: function(server_response) {
    if (id == server_response) { // <== Here
      console.log($("#" + id));  // <== Also fixed apparent typo on this line,
                                 //     but that's not the reason for the
                                 //     error you're getting
    } else {
      console.log("You shall not pass!");
    }
  },

$(server_response)要求jQuery使用server_response作为HTML并构建DOM元素或作为CSS选择器。 “无法识别的表达式”表明它看起来不像HTML,因此jQuery尝试将其用作选择器,但它不是有效的选择器。

在一个应该是评论的答案中,你说你已经将代码更新为(大部分)上面的代码,但它仍然无效,你已经向我们展示了这个PHP代码:

while ($idval = $reponse->fetch()) {
    if ($idval){
        echo $idval['user'];
    }
    else{
        echo "nope";
    }
}

如果if (id == server_response)无效,则告诉我们id不是server_response完全匹配。使用PHP脚本的一个常见原因是,您无意中在输出响应的代码之前或之后包含空格,通常是在某处,通常是最后的换行符。

我们可以通过server_response.trim()在现代浏览器上修剪这些内容,或者通过$.trim使用jQuery $.trim(server_response)来支持旧浏览器:

  success: function(server_response) {
    if (id == $.trim(server_response)) { // <== Here
      console.log($("#" + id));
    } else {
      console.log("You shall not pass!");
    }
  },

答案 1 :(得分:0)

你没有宣布任何&#34; d&#34;在您的代码中,但您在console.log

中使用此代码
console.log($("#"+d));

但它应该是:

console.log($("#"+id));

你错过了i

答案 2 :(得分:-1)

我不知道你为什么这样做var session = $(server_response).html();

您可以使用&#39; server_response&#39;。无需使用$符号。

另请更正console.log($("#" + d));console.log($("#" + id));的语法 因为我没有看到你在任何地方都定义了d

希望这会对你有所帮助。