PHP:获取$ .ajax调用的响应

时间:2017-10-04 12:57:13

标签: javascript php jquery ajax

我想基于ajax调用获取数据

这是我获取ID的代码

<h3> <a class='click' data-id='<?=$rows["id"];?>'><?=$rows['title'];?></a</h3>

这是我的jquery代码  

 $(document).ready(function() {

    $(".click").on('click',function() {                
      var id= $(this).attr("data-id"); 
      alert(id);

      $.ajax({     
        type: "POST",
        url: "getevents.php", 
        data: {id:id}, 
        dataType: "html",                  
        success: function(response){                    
            console.log(response); 

        }
     });
 })})  
</script>

getevents.php

 <? 
    if(isset($_POST['id'])){
        echo  $_POST['id'] ; 
    }

    $singleevent = mysqli_query($link, 'SELECT * FROM `events` WHERE `id`=."'$id'"  ') or die('error');
    while($row=  mysqli_fetch_array($link , $singleevent)){
            print_r($row); 
    }

  ?> 

$ _ POST [&#39; id&#39;]; 会在控制台中打印,但不会在响应中打印。我在while循环中尝试了echo和print_r(),但没有任何响应。

请帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

PHP中存在一些问题。首先,您忘记重新分配变量,然后在查询中不正确地连接变量。如果未设置id,您可能也不希望查询运行,因此您需要重新排列括号:

<? 
    if(isset($_POST['id'])){
        $id =  $_POST['id'] ; // set the variable for the query
        $singleevent = mysqli_query($link, "SELECT * FROM `events` WHERE `id` = $id") or die('error');
        $row=  mysqli_fetch_array($singleevent, MYSQLI_ASSOC);
        print_r($row); 
    }
?> 

我假设您的$link是与您的数据库良好且正确的连接。假设id选择单行数据,您也不需要while循环。您还需要使用查询结果和MYSQLI_ASSOC这样正确地获取数组:

$row=  mysqli_fetch_array($singleevent, MYSQLI_ASSOC);

我已将其包含在代码块中。

如果未启用PHP短标记,则需要将<?更改为<?php

警告

Little Bobby your script is at risk for SQL Injection Attacks. 了解preparedMySQLi语句。即使escaping the string也不安全!