【发布时间】:2022-01-14 07:04:27
【问题描述】:
这是我的代码:
<!DOCTYPE html>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.7.1.min.js"></script>
<html>
<title>Login</title>
<body>
<p>Enter the name of your school bellow in full</p>
<br>
<input type="text" id="school_text" name="school_txt" onkeyup="check_school()">
<p id="output_field">School does not exist</p>
<script>
var result = ("");
var schoolEntry = document.getElementById("school_text").innerHTML;
function check_school() {
console.log("Checking if school exists");
schoolEntry = document.getElementById("school_text").innerHTML;
$.ajax({
url: 'checkSchool.php',
type: 'POST',
dataType:'json',
data: {'post_var':document.getElementById("school_text").innerHTML},
success: function(data) {
console.log(data);
result = data;
}
});
document.getElementById("output_field").innerHTML = (result);
}
</script>
</body>
</html>
和 php 脚本
<?php
$user_input=$_POST['post_var'];
echo json_encode($user_input."1test_string");
?>
无论出于何种原因,php 都不会从 ajax 脚本接收变量。 PHP 能够将变量发送到 ajax 成功函数,并且 Apache 日志中没有错误。有人可以告诉我我没有错吗?我也担心apache也会有问题。
【问题讨论】:
-
你能试试这个吗:在 echo header('Content-type: application/json');
-
input元素没有innerHTML- 或者至少如果有,它不包含用户输入的值。请改用value。然后回到您的 HTML 表单教程并密切关注示例......同样就您的问题而言,“不会”不是有用的错误消息或问题描述。它表明您没有做太多/任何努力来调试它。如果您将其分解并尝试遵循从捕获到发送、到 PHP、到编码、再到响应的值,您会很快注意到它在“捕获”阶段失败,原因我刚刚描述。 -
@GurkanAtik 在提供 JSON 响应方面更“合适”,但在这种情况下实际上并没有太大区别 - 因为 OP 已指定
dataType: "json",jQuery 将尝试解码无论如何,响应为 JSON。但这不是问题的根源——问题是数据不会被发送,原因我上面已经提到过。 -
一旦你解决了这个问题,其他问题是 1)
document.getElementById("output_field").innerHTML = (result);需要在“成功”函数中,否则它将被执行 在 AJAX 调用完成之前(因为AJAX 调用是异步的),2)如果你只是想让PHP 返回一个字符串,那么使用JSON 没有什么意义。当您需要一次返回多个不同的数据时,JSON 非常有用。
标签: javascript php jquery