如何传递和获取jquery的PHP值

时间:2015-08-17 07:22:38

标签: php jquery

我在传递值时遇到一个问题,我无法通过查询字符串传递它。我的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']没有获得任何价值。

5 个答案:

答案 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>

现在点击链接

您的网页将是这样的:

about.php?aboutus_id = 10

将此值与$_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添加到正确的区域。

我希望这就是你要找的东西。