我在传递值时遇到一个问题,我无法通过查询字符串传递它。我的PHP是:
<div class="menu">
<div class="sub_menu_header">ABOUT</div>
<?php
$query1="SELECT id,title FROM aboutus_tbl";
$resulto=mysql_query($query1);
while ($row = mysql_fetch_array($resulto)) {
?>
<a href="about" class="menuid" id="<?php echo $row['id'];?>"><div class="<?php echo $row['title'];?>" id="sub_menu"><?php echo $row['title'];?>
</div></a>
<?php
}
?>
</div>
jQuery的:
<script>
$(".menuid").click(function() {
date_time = $(this).attr('id');
console.log(data);
$.ajax({
type: 'POST',
url: 'about',
data: {"aboutus_id" : date_time},
success: function(data){
alert( data );
}
});
});
</script>
完整代码:
<?php ob_start(); include('web/header.php');?>
<!--main-->
<div class="main_btm">
<div class="wrap">
<div class="main">
<div class="new_head"><font size="5" color="#FC2B5F">
<script>
$(".menuid").click(function() {
date_time = $(this).attr('id');
console.log(data);
$.ajax({
type: 'POST',
url: 'about',
data: {"aboutus_id" : date_time},
success: function(data){
alert( data );
}
});
});
</script>
<?php
if (isset($_POST['aboutus_id'])) {
$id=$_POST['aboutus_id'];
echo $id;
}
else{
$id=1;
}
$que="SELECT title FROM aboutus_tbl WHERE id='".$id."'";
$re=mysql_query($que);
$r=mysql_fetch_array($re);
echo $r[0];
?>
</font></div>
<div class="menu">
<div class="sub_menu_header">ABOUT</div>
<?php
$query1="SELECT id,title FROM aboutus_tbl";
$resulto=mysql_query($query1);
while ($row = mysql_fetch_array($resulto)) {
?>
<a href="about" class="menuid" id="<?php echo $row['id'];?>"><div class="<?php echo $row['title'];?>" id="sub_menu"><?php echo $row['title'];?>
</div></a>
<?php
}
?>
</div>
<div class="contant">
<div class="con_details">
<?php
$query="SELECT * FROM aboutus_tbl WHERE id='".$id."'";
$res=mysql_query($query);
$result=mysql_fetch_array($res);
$d1_per=explode(" ", $result['desc1']);
$d1_lenth=sizeof($d1_per);
$d2_per=explode(" ", $result['desc2']);
$d2_lenth=sizeof($d2_per);
$d3_per=explode(" ", $result['desc3']);
$d3_lenth=sizeof($d3_per);
if ($result['sub_title1']) {
?>
<legend><font size="5"><?php echo $result['sub_title1'];?></font></legend>
<?php
}
if ($result['desc1']) {
for ($i=0; $i < $d1_lenth; $i++) {
echo "<p>".$d1_per[$i]."</p>";
}
}
if ($result['sub_title2']) {
?>
<legend><font size="5"><?php echo $result['sub_title2'];?></font></legend>
<?php
}
if ($result['desc2']) {
for ($i=0; $i < $d2_lenth; $i++) {
echo "<p>".$d2_per[$i]."</p>";
}
}
if ($result['sub_title3']) {
?>
<legend><font size="5"><?php echo $result['sub_title3'];?></font></legend>
<?php
}
if ($result['desc3']) {
for ($i=0; $i < $d3_lenth; $i++) {
echo "<p>".$d3_per[$i]."</p>";
}
}
?>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
window.onload = function() {
$(document).ready(function() {
$('.<?php echo $result['title']?>').addClass('sub_menu_selected');
});
}
</script>
<?php include('web/footer.php'); ob_flush();?>
在上面的代码中,我在外面的<div>
和<a>
标签中显示了一个菜单,因此我可以点击它。我的问题是,当我点击菜单时,它必须使用id
课程的menuid
,但它不起作用且$_POST['aboutus_id']
没有获得任何价值。
答案 0 :(得分:5)
试试这段代码: - 如果你想重定向用户:
header('Location: http://ashvin.com/page.php?' . http_build_query($_GET, '', '&')); die();
如果您只想获取页面,请使用:
file_get_contents('http://ashvin.com/page.php?' . http_build_query($_GET, '', '&'));
和另一个: -
<a href="/exsomeurl.php?id=1&name=Jose" class="ajax-link"> Click </a>
<a href="/exsomeurl.php?id=2&name=Juan" class="ajax-link"> Click </a>
<a href="/exsomeurl.php?id=3&name=Pedro" class="ajax-link"> Click </a>
...
<a href="/exsomeurl.php?id=n&name=xxx" class="ajax-link"> Click </a>
<script type="text/javascript">
$(function() {
$('.ajax-link').click( function() {
$.get( $(this).attr('href'), function(msg) {
alert( "Data Saved: " + msg );
});
return false; // don't follow the link!
});
});
</script>
答案 1 :(得分:3)
您可以在链接中使用id
而不是hidden
元素。
<a href="about.php" id="<?php echo $row['id'];?>">
<div class="<?php echo $row['title'];?>" id="sub_menu"><?php echo $row['title'];?></div>
</a>
答案 2 :(得分:3)
您可以在href
<a href="about.php?aboutus_id=<?php echo $row['id'];?>" id="<?php echo $row['id'];?>" class="<?php echo $row['title'];?>">
<?php echo $row['title'];?>
</a>
现在点击链接
您的网页将是这样的:
将此值与$_GET
if(isset($_GET['aboutus_id']) && $_GET['aboutus_id']!="")
{
echo $_GET['aboutus_id'];
}
答案 3 :(得分:2)
如果aboutus_tbl表的id列是INT类型,则用引号括起id的代码部分将导致查询返回null。从html元素传递的id将是字符串形式"3"
,因此您必须解析来自$ id的整数值作为初学者。这也将使您的代码不易受到SQL注入的影响,通过直接评估SQL中的用户输入,您无疑会成为受害者。请考虑以下内容。用户使用html表单发布;DROP TABLE aboutus_tbl--
而不是id!这是易受攻击的代码:
`
if (isset($_POST['aboutus_id'])) {
$id=$_POST['aboutus_id'];
echo $id;
}
else{
$id=1;
}
$que="SELECT title FROM aboutus_tbl WHERE id='".$id."'";`
我建议将$id=$_POST['aboutus_id'];
更改为$id=intval($_POST['aboutus_id']);
并删除最后一行的引号,如下所示:
$que="SELECT title FROM aboutus_tbl WHERE id=$id";`
php将在没有连接的情况下从双引号""
中读取变量。希望这能帮到你!
编辑:请记住,防止注入的唯一可靠方法是使用PDO或预准备语句:尝试this学习预备语句或here是PDO的一个不错的例子。另外,请记住&gt; PHP5.5 mysql已被弃用!!使用mysqli!
答案 4 :(得分:0)
我的答案将以三页的形式出现:
<强>的index.php 强>
<!DOCTYPE html>
<html>
<head>
<title>MyPageTitle</title>
<script src="path/to/javascript.js"></script>
</head>
<body>
<div id="mainContent"></div>
</body>
</html>
脚本文件(JavaScript)
$( document ).ready( function ()
{
$.ajax( {
url: "path/to/phpscript.php?myGet=true",
type: "GET",
success: function ( response )
{
$( "#mainContent" ).html( response );
},
beforeSend: function ()
{
$( "#mainContent" ).html( "Loading content..." );
}
});
} );
脚本文件(PHP)
<ul class="menu">
<li><a href="about.php">About</a></li>
<!-- More here -->
</ul>
您显然需要为此添加jQuery库,但这是一种方法,并将给定的AJAX调用页面中的HTML添加到正确的区域。
我希望这就是你要找的东西。