【问题标题】:Can't get Post value ID from row table to PHP using Jquery无法使用 Jquery 从行表到 PHP 获取 Post 值 ID
【发布时间】:2017-06-17 16:18:52
【问题描述】:

我知道我的问题可能是重复的,但我已经查看了大量具有相同问题的问题,但没有一个解决方案适合我。

这很简单,获取 item-id 值并将其发布到 del.php。 点击后我无法在php中获取POST值。

<?php
  include '../include/db.php';

  $result = $mysqli->query("SELECT * FROM usuario WHERE nivel = '1'");

  while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td class='item-id'>" . $row['id'] . "</td>";
  echo "<td>" . $row['nome']. "</td>";
  echo "<td>" . $row['email']. "</td>";
  echo "</tr>";
  }

  ?>

  <script type="text/javascript">
    $("tr").click(function() {

    var id = $(this).find('.item-id').text();

    $.post('del.php',{id: id},function(json){

    window.location.href = "http://localhost/unesc/3/admin/del.php";
    }, "json")
});

</script>

del.php

<?php 

if (isset($_POST['id'])){
    $id = $_POST['id'];
    echo $id;
} else {
    echo "erro";
}

 ?>

del.php 只是获取 $_post['id'] 并回显它。 window.location 在那里,所以我不必手动输入地址。 触发器不一定是 Click,它可以是 Button,对我来说也很好。

编辑:使用 $.ajax 运行 POST,但现在使用 firebug 我注意到 del.php 中的帖子一直返回空。

EDIT2:得到了 del.php 的 post 响应,但作为一个错误,它说 'id' 不存在。

【问题讨论】:

  • 请出示你的 php!
  • 等一下,您想在哪里/如何查看 $_POST['id']?在 location.href 之后?那是行不通的。 json 中有什么内容?你在那儿看到了吗?
  • 添加了del.php代码
  • 你检查过 JS 变量 id 存储你认为它的作用吗?
  • 您实际上是在发出两个请求:一个 ajax POST,一旦返回,您将窗口位置更改为 del.php,您的浏览器将执行一个没有负载的 GET 请求。在您的浏览器中,您将看不到任何内容,因为来自 POST 有效负载的响应仅存在于您的 javascript 中。

标签: php jquery mysql json ajax


【解决方案1】:

如果THIS是你需要的,这里是我使用的两个页面的代码

del2.php

<script type="text/javascript" language="javascript" src="jquery.min.js"></script>

<?php
//include '../include/db.php';
include 'includeconnect.php';

//$result = $mysqli->query("SELECT * FROM usuario WHERE nivel = '1'");
$result = mysql_query("SELECT * FROM usuario WHERE nivel = '1'");

while($row = mysql_fetch_array($result))
{  
echo "
<table border='1'>
<tr>";
echo "<td class='item-id'>" . $row['id'] . "</td>";
echo "<td>" . $row['nome']. "</td>";
echo "<td>" . $row['email']. "</td>";
echo "</tr>
</table>
</br>";
}


echo"<div id='show_responce'>I am a text on page del2.php and I am pretty much useless apart from showing you where the responce will display</div>"
?>

<script type="text/javascript">
$("tr").click(function() {

var rep = $("#show_responce");

var id = $(this).find('.item-id').text();

var dataString = 'id=' + id;
    $.ajax({
        type: 'post',
        url: 'del.php',
        data: dataString,
        success: function(html) {
                 rep.empty().append(html);
                 rep.fadeIn("slow")
        }
    });     

});

</script>

这是你修改后的 del.php

<?php 

if (isset($_POST['id'])){
$id = $_POST['id'];
echo "I am coming from del.php and the ID you clicked on is $id";
} else {
echo "error";
}

?>

顺便说一句,由于我的帐户声誉低下,我无法问你想用这个 window.location 做什么,但无论如何。而不是你要求的基本上是确保 del.php 获得 id 的值,正如你将看到的那样,我将它显示在 del2.php 上,这是我发出请求的页面。

【讨论】:

  • 很高兴能提供帮助:P
【解决方案2】:
    $( "table > td" ).find( ".item-id" ).val();

    or



<?php
while($row = mysqli_fetch_array($result))
  {
  echo "<tr id='row'>";
  echo "<td  class='item-id'>" . $row['id'] . "</td>";
  echo "<td>" . $row['nome']. "</td>";
  echo "<td>" . $row['email']. "</td>";
  echo "</tr>";
  }

?>
<script>
        var id = [];
    var values = [];
    $("#row > .item-id").each(function(index){
       id.push($(this).attr("id")); // [a,b,c,....]
       values.push($(this).text()); //[ Dummy1, Dummy2, Dummy3, Dummy4,..]
    });

</script>

【讨论】:

    【解决方案3】:

    可能的错误:

    1. }, "json") 这里最后一个参数的意思是,该函数希望您从 del.php 文件中返回有效的 JSON 字符串。

    2. window.localtion.href 之后,您无法访问以前的数据,因为它会重定向到另一个页面,因此您会丢失所有以前的数据。

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 2021-08-31
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多