我需要传递一个名为' square'的变量。在我的php文件之间,一切正常,直到我转到动作文件从我的数据库中检索数据:
//plan.php
<?php
include("config.php");
session_start();
$loggeduser = $_SESSION['user'];
if (!isset($_SESSION['user']))
{
header("Location: login.php");
}
// Get selected square
$selsquare = $_GET["square"];
?>
<script>
$(document).ready(function(){
fetchUser();
function fetchUser()
{
var action = "Load";
$.ajax({
url : "action.php?square=$selsquare",
method:"POST",
data:{action:action},
success:function(data){
$('#result').html(data);
}
});
}
</script>
这是我的action.php文件
<?php
//Database connection by using PHP PDO
$username = 'root';
$password = '';
$connection = new PDO( 'mysql:host=localhost;dbname=db', $username, $password );
$selsquare = $_GET["square"];
if(isset($_POST["action"]))
{
if($_POST["action"] == "Load")
{
$statement = $connection->prepare("SELECT * FROM plans WHERE square = '$selsquare' ");
$statement->execute();
$result = $statement->fetchAll();
$output = '';
$output .= '
<table class="table table-bordered">
<tr>
<th width="10%">ID</th>
<th width="10%">Square</th>
<th width="40%">Plan</th>
<th width="10%">Update</th>
<th width="10%">Delete</th>
</tr>
';
if($statement->rowCount() > 0)
{
foreach($result as $row)
{
$output .= '
<tr>
<td>'.$row["id"].'</td>
<td>'.$row["square"].'</td>
<td>'.$row["plan"].'</td>
<td><button type="button" id="'.$row["id"].'" class="btn btn-warning btn-xs update">Update</button></td>
<td><button type="button" id="'.$row["id"].'" class="btn btn-danger btn-xs delete">Delete</button></td>
</tr>
';
}
}
else
{
$output .= '
<tr>
<td align="center">Data not Found</td>
</tr>
';
}
$output .= '</table>';
echo $output;
}
?>
我需要检索所有square = $ selsquare的数据,但它不起作用。 selsquare在plan.php中工作,但在action.php中没有 请帮我弄清楚什么是错的
答案 0 :(得分:1)
你没有正确地做到这一点。在你的ajax方法中,传递数据的方法是post,在你的action.php文件中你将它作为get变量提取。
<script>
$(document).ready(function(){
fetchUser();
function fetchUser()
{
var action = "Load";
var square = "<?php echo $selsquare ?>";
$.ajax({
url : "action.php",
method:"POST",
data:{action:action, square:square},
success:function(data){
$('#result').html(data);
}
});
}
</script>
现在在action.php文件
中获取square作为post变量我没有测试过代码,但应该可以使用。
答案 1 :(得分:0)
默认情况下,PHP会话需要cookie来识别它们。您正在尝试运行2个单独的PHP脚本(包括Ajax调用的脚本),因此每个脚本都需要访问cookie。
默认情况下,Ajax不发送cookie。这是一项相对较新的功能,但目前所有浏览器都支持此功能。
首先,您需要将属性withCredentials
设置为true。这将允许传递cookie。
请参阅http://api.jquery.com/jQuery.ajax/
$.ajax({
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
}
});
在PHP中,您还需要包含如下语句:
header("Access-Control-Allow-Credentials: true");
在您的回复脚本中。
或者,您可以指示PHP接受会话ID并让Ajax将其作为查询字符串发送。
答案 2 :(得分:0)
您正在从Javascript发送POST
,而在您的PHP中,您正在阅读$_GET
。
<script>
$(document).ready(function(){
fetchUser();
function fetchUser()
{
var square_js = '<?php echo $selsquare; ?> ';
$.ajax({
url : "action.php?square=$selsquare",
method:"GET",
data:{square:square_js},
success:function(data){
$('#result').html(data);
}
});
}
</script>
如果您的方块的值为ABCDEF,那么在您的PHP中,您将以这种方式获得请求
print_r($_GET);
Array{
"square" => "ABCDEF"
}
在双引号中传递字符串的推荐方法是使用{}
url : "action.php?square=$selsquare",
应该是
url : "action.php?square={$selsquare}",