我不知道为什么控制台会给我这个未被删除的语法... 帮帮我吧!
$(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",但它返回未被捕获的....
答案 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
。
希望这会对你有所帮助。