AJAX POST - 如何在 PHP 中使用 js 变量
AJAX POST - how to use a js variable in PHP
第一次加载页面时,POST 数据数组中不会有任何内容。在它运行之后,我希望能够使用我在 PHP 代码中的 POST 数据中发送的任何变量,这样我就可以根据发送的参数查询我的数据库。我是否需要以某种方式重新加载页面才能执行此操作?
PHP:
if(isset($_POST['boarder'])){
$boarder = $_POST['boarder'];
function boarderCheck($boarder){
echo "<script type ='text/javascript'>alert('$boarder');</script>";
}
boarderCheck($boarder);
} else {
?>
<script defer src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="map.js"></script>
<?
};
?>
JavaScript (map.js)
$.ajax({
type: "POST",
data: {boarder: 'test'},
dataType: 'text',
success: function(response) {
console.log(response);
}
})
不,您不需要重新加载页面,尤其是因为您使用的是异步请求(AJAX[= 中的 A 30=]) 到相同的 URL.
查看 this phpfiddle demonstrating your example (with a couple modifications). Click the Run - F9 button and then click the button labeled Board to run the JavaScript (with the AJAX request). If you open the browser console,您应该会在 网络选项卡 中看到请求。主要的应该是对 code_41096139.php 这样的页面的 GET 请求(数字可能会改变)。然后,当发出 AJAX 请求时,应该对同一页面发出 POST 请求。展开该请求,您应该会看到表单数据。
除了添加按钮和点击处理程序外,所做的唯一修改是添加输出元素:
<div id="output"></div>
然后在 AJAX 请求的 成功 回调中,将该元素的文本设置为响应(除了调用 console.log()
):
success: function(response) {
$('#output').text('response: '+response);
console.log(response);
}
您可以使用 Ajax 请求来完成此操作。您已经加载了 JQuery 库并拥有发送 Ajax 请求的代码。
也许您正在寻找如何在客户端脚本中使用 Ajax 响应或如何在客户端事件中向服务器发送 Ajax 请求。
Ajax是一种无需刷新页面即可与服务器通信的方式。
所以对你的问题的简单回答是 - 不,你不需要重新加载页面来完成这个。
但是,如果您可以(并且更舒服)重新加载页面,您可以编写 JavaScript 来填充隐藏表单中的隐藏字段,然后使用 JavaScript 以编程方式提交表单并在 $_POST
上处理 php 中的所有内容
我认为它会帮助你发送请求和加载数据,如果你想重新加载页面,如果你也想搜索它
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>PHP, jQuery search demo</title>
<link rel="stylesheet" type="text/css" href="my.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("input").keyup(function () {
$('#results').html('');
var searchString = $("#search_box").val();
var data = 'search_text=' + searchString;
if (searchString) {
$.ajax({
type: "POST",
url: 'search.php',
data: data,
dataType: 'text',
async: false,
cache: false,
success: function (result) {
$('#results').html(result);
//window.location.reload();
}
});
}
});
});
</script>
</head>
<body>
<div id="container">
<div style="margin:20px auto; text-align: center;">
<form method="post" action="do_search.php">
<input type="text" name="search" id="search_box" class='search_box'/>
<input type="submit" value="Search" class="search_button"/><br/>
</form>
</div>
<div>
<div id="searchresults">Search results :</div>
<ul id="results" class="update">
</ul>
</div>
</div>
</body>
</html>
然后创建一个 php 文件
<?php
$searchquery = trim($_POST['search_text']);
echo $searchquery;
?>
您可以添加更多您想要的代码,例如更新数据库,根据需要插入搜索
第一次加载页面时,POST 数据数组中不会有任何内容。在它运行之后,我希望能够使用我在 PHP 代码中的 POST 数据中发送的任何变量,这样我就可以根据发送的参数查询我的数据库。我是否需要以某种方式重新加载页面才能执行此操作?
PHP:
if(isset($_POST['boarder'])){
$boarder = $_POST['boarder'];
function boarderCheck($boarder){
echo "<script type ='text/javascript'>alert('$boarder');</script>";
}
boarderCheck($boarder);
} else {
?>
<script defer src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="map.js"></script>
<?
};
?>
JavaScript (map.js)
$.ajax({
type: "POST",
data: {boarder: 'test'},
dataType: 'text',
success: function(response) {
console.log(response);
}
})
不,您不需要重新加载页面,尤其是因为您使用的是异步请求(AJAX[= 中的 A 30=]) 到相同的 URL.
查看 this phpfiddle demonstrating your example (with a couple modifications). Click the Run - F9 button and then click the button labeled Board to run the JavaScript (with the AJAX request). If you open the browser console,您应该会在 网络选项卡 中看到请求。主要的应该是对 code_41096139.php 这样的页面的 GET 请求(数字可能会改变)。然后,当发出 AJAX 请求时,应该对同一页面发出 POST 请求。展开该请求,您应该会看到表单数据。
除了添加按钮和点击处理程序外,所做的唯一修改是添加输出元素:
<div id="output"></div>
然后在 AJAX 请求的 成功 回调中,将该元素的文本设置为响应(除了调用 console.log()
):
success: function(response) {
$('#output').text('response: '+response);
console.log(response);
}
您可以使用 Ajax 请求来完成此操作。您已经加载了 JQuery 库并拥有发送 Ajax 请求的代码。
也许您正在寻找如何在客户端脚本中使用 Ajax 响应或如何在客户端事件中向服务器发送 Ajax 请求。
Ajax是一种无需刷新页面即可与服务器通信的方式。
所以对你的问题的简单回答是 - 不,你不需要重新加载页面来完成这个。
但是,如果您可以(并且更舒服)重新加载页面,您可以编写 JavaScript 来填充隐藏表单中的隐藏字段,然后使用 JavaScript 以编程方式提交表单并在 $_POST
上处理 php 中的所有内容我认为它会帮助你发送请求和加载数据,如果你想重新加载页面,如果你也想搜索它
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>PHP, jQuery search demo</title>
<link rel="stylesheet" type="text/css" href="my.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("input").keyup(function () {
$('#results').html('');
var searchString = $("#search_box").val();
var data = 'search_text=' + searchString;
if (searchString) {
$.ajax({
type: "POST",
url: 'search.php',
data: data,
dataType: 'text',
async: false,
cache: false,
success: function (result) {
$('#results').html(result);
//window.location.reload();
}
});
}
});
});
</script>
</head>
<body>
<div id="container">
<div style="margin:20px auto; text-align: center;">
<form method="post" action="do_search.php">
<input type="text" name="search" id="search_box" class='search_box'/>
<input type="submit" value="Search" class="search_button"/><br/>
</form>
</div>
<div>
<div id="searchresults">Search results :</div>
<ul id="results" class="update">
</ul>
</div>
</div>
</body>
</html>
然后创建一个 php 文件
<?php
$searchquery = trim($_POST['search_text']);
echo $searchquery;
?>
您可以添加更多您想要的代码,例如更新数据库,根据需要插入搜索