Подтвердить что ты не робот

Как передать и получить значение 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'] не получает никакого значения.

4b9b3361

Ответ 1

попробуйте этот код: - если вы хотите перенаправить пользователя:

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>

Ответ 2

Вы можете использовать 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>

Ответ 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'];
   }

Ответ 4

Если столбец id вашей таблицы aboutus_tbl имеет тип INT, то часть вашего кода, которая заключает идентификатор в кавычки, приведет к нулевому результату запроса. Идентификатор, переданный из элемента html, будет в форме строки "3", поэтому вы должны проанализировать целочисленное значение из $id для стартеров. Это также сделает ваш код менее уязвимым для SQL-инъекции, и вы, несомненно, потерпите поражение, оценив вход пользователя в SQL напрямую, рассмотрите следующее. Пользователь делает html-форму post ;DROP TABLE aboutus_tbl-- вместо идентификатора! Вот уязвимый код:  `

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, чтобы изучить подготовленные заявления или здесь является достойным примером PDO. Кроме того, помните, что > PHP5.5 mysql не рекомендуется! Использовать mysqli!

Ответ 5

Кажется, что у вас есть только один файл, и вы хотите, чтобы он отображал то, что вы хотите, чтобы пользователь мог видеть и выбирать, а также получать ввод пользователя и отправлять обратно самому себе. Простите меня, если я ошибаюсь. Однако, хотя это возможно, я бы не посоветовал вам принять этот подход.

Разделите файл на два основных файла:

  • Разметка (HTML/PHP) и JS, которые отображают то, что пользователь должен видеть изначально. Это загружаемая страница: my.domain.com/index.php
  • PHP, который будет получать пользовательский ввод, подключиться к базе данных и выводить/возвращать результат. Это будет значение url в вашем вызове ajax: /about.php

Первый файл: index.php(например) Может потребоваться очистка

<!-- index.php ...hopefully header include jquery.js -->
<?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>
    //it usually a good idea to put this in it own .js file
    $(function() {
        $(".menuid").click(function(e) {
            e.preventDefault();
            var date_time = this.id;
            console.log(date_time);
            $.ajax({
                type: 'POST',
                url: '/about.php', //<<--- second file
                data: {"aboutus_id" : date_time},
                success: function(data){
                    alert( data );
                }
            });
        });
    });
    </script>

    </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();?>

Второй файл: about.php

<!-- about.php -->
<?php
    if (isset($_POST['aboutus_id'])) {
        $id=$_POST['aboutus_id'];
        echo $id; //possibly part of the alert
    } else {
        $id=1;
    }
    $que="SELECT title FROM aboutus_tbl WHERE id='".$id."'";
    $re=mysql_query($que);
    $r=mysql_fetch_array($re);
    echo $r[0]; //should show on the alert -- ajax call
?>

Ответ 6

Итак, сначала:

console.log(data)

Очевидно, дает ошибку, как в вашем коде, data не установлен.

Затем вы, вероятно, должны заменить:

url: 'about',

С помощью:

url: '/about',

Кажется основным, но, пожалуйста, сделайте снимок.

Ответ 7

Попробуйте следующее:

 <?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">    
<?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>

    <form action="index.php" id="form" method="post">
    <input type="hidden" id="aboutus_id" name="aboutus_id" value="">

    <?php 
        $query1="SELECT id,title FROM aboutus_tbl";
        $resulto=mysql_query($query1);
        while ($row = mysql_fetch_array($resulto)) {
    ?>
    <a href="#" class="menuid" id="<?php echo $row['id'];?>"><div class="<?php echo $row['title'];?>" id="sub_menu <?php echo $row['id'];?>"><?php echo $row['title'];?>
    </div></a>
    <?php
    }
    ?>
    </form>
</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');

      $(".menuid").click(function() {
             date_time = $(this).attr('id');
             $("#aboutus_id").val(date_time);
             $("#form").submit();
              //console.log(data);
              /* $.ajax({
               type: 'POST',
               url: 'about',
               data: {"aboutus_id" : date_time},
               success: function(data){
                  alert( data );
                }
              }); */
         });    
     });       
   }
</script>
<?php include('web/footer.php'); ob_flush();?>
  • $(".menuid").click(function() {... он должен быть в пределах window.onload и помещен в конец html-кода.
  • Не используйте Ajax для перезагрузки самой страницы.
  • Используйте submit из объекта формы для выполнения этой задачи.
  • Используйте скрытое поле типа для хранения значения id.
  • Поместите путь файла в: <form action="index.php"...

Ответ 8

Мой ответ будет представлен в виде трех страниц, построенных таким образом:

index.php

<!DOCTYPE html>
<html>
    <head>
        <title>MyPageTitle</title>
        <script src="path/to/javascript.js"></script>           
    </head>

    <body>
        <div id="mainContent"></div>
    </body>
</html>

script файл (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..." );
        }
    });
} );

script файл (PHP)

<ul class="menu">
    <li><a href="about.php">About</a></li>
    <!-- More here -->
</ul>

Вам, очевидно, нужно будет добавить библиотеки jQuery для этого, но это способ сделать это и добавить HTML из заданной страницы AJAX в правильную область.

Надеюсь, это то, что вы ищете.