This.id使用ajax传递给php,但在通过jquery加载时返回一个未定义的索引

时间:2016-02-01 12:42:16

标签: php jquery ajax

我一直在互联网上搜索,甚至在网站开发论坛上搜索,但幸运的是我还没有找到解决问题的方法。

这是html代码

<div id='bottom-right-display'>
                    <ul id='display-app'>
                        <li><a href='#' class='btn-test-1' id='123'>Testing1</a></li>
                        <li><a href='#' class='btn-test-2'>Testing2</a></li>
                        <li><a href='#' class='btn-test-3'>Testing3</a></li>
                    </ul>
</div>

这是jquery代码

$(".btn-test-1").click(function(){
        //with the use of post
        $.post("somefile.php",{id,this.id},function(data){
            $("#outputarea").load("somefile.php");
        });
        //or
        //with the use of ajax
        $.ajax({  
            type: "POST",  
            url: "somefile.php",  
            data: {id:this.id},      
            success: function(result){  
              $("#outputarea").load("somefile.php");
            } 
        })
    });

这是php代码

<?php
     require_once "connection.php";

     $sorter = $_POST["id"];//------>THIS IS THE LINE OF CODE WHERE THE ERROR IS STATING ABOUT!!
     $retrieve = $conn->prepare("SELECT * FROM `table1` WHERE `id` != '$sorter'");
     $retrieve->execute();
     $retrieve->bind_result($groupname);

     while($retrieve->fetch()){
        echo "<li>".$groupname."</li>";
     }
?>

问题是使用$ .post或$ .ajax将一个this.id传递给php,但是返回错误说注意:未定义的索引:在C:\ xampp \ htdocs \ somefile.php中的id 当使用加载但使用alert时它显示我想要的结果,我甚至尝试使用isset但它是空的,根本没有数据。如果您知道任何已经回答的问题或解决方案,请将其评论为T_T。

4 个答案:

答案 0 :(得分:1)

检查数据是否确实在post请求中。

if(isset($_POST['id'])) $sorter = $_POST['id']; 
else die('ERROR: No ID set')

然后我还会检查你是否可以通过AJAX向服务器发送数据。否则,请尝试将此代码添加到您的Javascript中。

$(".btn-test-1").click(function(){

    var $dta = new FormData();

    $dta.append("id",this.id);

    $.ajax({  
        type: "POST",  
        url: "somefile.php",  
        data: $dta,
        contentType: false,
        cache: false,
        processData:false,
        success: function(result){  
          $("#outputarea").html(result);
        } 
    })
});

答案 1 :(得分:0)

我认为问题在于您首先发送附加id的ajax请求,但在成功回调中,您再次请求somefile.php。第二次没有附上身份证。

相反,您应该使用结果变量从第一个请求获取somefile.php的“输出”。第二个请求不需要。

像这样:

$(".btn-test-1").click(function(){
    $.ajax({  
        type: "POST",  
        url: "somefile.php",  
        data: {id:this.id},      
        success: function(result){  
          $("#outputarea").html(result);
        } 
    });
});

答案 2 :(得分:0)

您的代码似乎没问题。我无法模拟的一件事是required 'connection.php'。你能先简化你的PHP代码吗?我的意思是只做echo $_POST['id']只是为了确保您之前的代码不会影响您的帖子数据。

答案 3 :(得分:0)

将jquery更改为此并尝试:

package lila

object makeTimeout {
  implicit val large = 5
}