[英]Show PHP result in Jscript Pop-up
我希望用户能够通过输入一些细节来检查数据库中的数字。 然后,此数字将显示在javascript警报中。
我有一个带有用户输入的索引页面,如下所示:
<script type="text/javascript">
function check()
{
$.ajax({
url: "checkpna.php",
type: "POST"})
}
function show_alert()
{
alert(check())
}
</script>
<form action="#" method="get" class="formubuntu" onSubmit="return submitForm()">
<p>Check Pallet PNA Number <input name="lpn" id="lpn_0" type="text" style="border-top-left-radius: 4px 4px; border-top-right-radius: 4px 4px; border-bottom-right-radius: 4px 4px; border-bottom-left-radius: 4px 4px; margin-right: auto; margin-left: auto;" value="Pallet LPN">
<input name="submit" type="submit" value="Submit" class="art-button" onclick="show_alert()"></p>
</form>
以及检查数据库中特定细节的checkpna.php:
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if($_GET['submit'] == "Submit")
{
$lpn = $_GET["lpn"];
}
$values = array();
$query = "select serial_number from t_container where container_number = '".$lpn."';";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo stripslashes($row['serial_number']);
}
}
else {
echo "NO RESULTS";
}
?>
但是我得到一个未定义的弹出窗口。 我究竟做错了什么??
函数check
不返回任何内容(因此undefined
)。
如果你确实return $.ajax()
它会返回一些东西,但是什么? 它返回一个Promise
。 承诺是未来价值的容器,是我们尚未拥有的价值。 我们没有价值的原因是因为请求尚未完成,它才刚刚开始。
您可以将代码更改为:
function check() {
return $.ajax(/* .. */);
}
function show_alert() {
check().done(function (result) {
alert(result);
});
}
您的PHP代码存在一些严重问题。 它有效 ,但不安全。 阅读SQL注入并查看验证输入(检查submit
,但不检查lpn
)。
你想要这样的东西:
$.ajax({
url: "checkpna.php",
type: "POST"})
.done(function( data ) {
alert(data);
}
您无法立即发出警报,您必须等到从服务器收到Ajax请求的答案。 只需添加回调函数即可在结果到达时执行此操作。
https://api.jquery.com/jQuery.ajax/
function check()
{
$.ajax({
url: "checkpna.php",
type: "POST",
complete: function(return) {
alert(return);
}
})
}
function show_alert()
{
check();
}
我相信对于ajax请求,当成功并从该回调发出警报时,您需要回调
success类型:Function(PlainObject data,String textStatus,jqXHR jqXHR)请求成功时要调用的函数。 该函数传递三个参数:从服务器返回的数据,根据dataType参数格式化; 描述状态的字符串; 和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象。 从jQuery 1.5开始,成功设置可以接受一系列函数。 每个函数将依次调用。 这是一个Ajax事件。
<script type="text/javascript">
function show_alert()
{
$.ajax({
url: "checkpna.php",
type: "POST",
success: function (data) {
alert(data);
}
});
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.