使用ajax

时间:2015-08-17 16:24:12

标签: javascript jquery ajax json

我有一些div个类content-full,它们是根据存储在 MySQL 表中的数据创建的。例如,如果我有3行,则会有3 div s。

当我点击div中的任何一个时,div div内应显示与该content-full ID 相关联的数据}。但是,当我点击div中的任何一个时,会显示与上一个divs相关联的内容,因为我没有传递任何可用于指定其中的变量 ID 点击了div

 <script type="text/javascript">

  $(document).ready(function() {

    $(".content-short").click(function() {                //

      $.ajax({   
        type: "GET",
        url: "content.php",               //
        dataType: "text",                  
        success: function(response){                    
            $(".content-full").html(response); 
        }

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

content.php

 <?php
     include "mysql.php";
     $query= "SELECT Content FROM blog limit 1";
     $result=mysql_query($query,$db);
     while($row=mysql_fetch_array($result))
       {
           echo $row['Content'];          
       }
     mysql_close($db);  

    ?> 

是否有其他方法可以执行此操作或我需要纠正的工作方式?

由于

2 个答案:

答案 0 :(得分:0)

您可以查看将参数传递给脚本,通常类似于您可以在数据库中搜索的ID。

实现这一目标的最简单方法是在网址上获取参数     url: "content.php?param=2",

然后在php中: <?php $param = $_GET['param']; ...

答案 1 :(得分:0)

首先,您必须将实际数据传递给PHP脚本。让我们首先处理JavaScript结束。我将假设您的HTML代码是使用php打印的,您可以创建如下内容:<div class=".content-short" data-id="2" />

$(".content-short").click(function() {
  // get the ID
    var id = $(this).attr('data-id');
    $.ajax({   
        type: "post",
        url: "content.php",
        data: 'id=' + id
        dataType: "text",                  
        success: function(response){                    
            $(".content-full").html(response); 
        }
    });
});

接下来读取您使用脚本传递的值:

<?php
include "mysql.php";
// Use the $_POST variable to get all your passed variables.
$id     = isset($_POST["id"]) ? $_POST["id"] : 0;
// I am using intval to force the value to a number to prevent injection.
// You should **really** consider using PDO.
$id     = intval($id);
$query  = "SELECT Content FROM blog WHERE id = " . $id . " limit 1";
$result = mysql_query($query, $db);
while($row=mysql_fetch_array($result)){
    echo $row['Content'];          
}
mysql_close($db);
?>

你去了,我修改了你的查询以允许通过id获取。有两个主要警告:

首先:你不应该再使用mysql_函数了,它们已被弃用,如果还没有发生,它将很快从PHP中删除!,其次:我无法保证查询工作,当然,我不知道你的数据库结构是什么。

最后一个问题是:结果为空时该怎么办?好吧,通常AJAX调用发送和响应JSON对象,所以也许最好这样做,替换这一行:

 echo $row['Content'];

用这个:

 echo json_encode(array('success' => $row['Content']));

现在,在JS的success函数中,您应该尝试检查是否有成功消息。首先,将dataType更改为json或完全删除该行。现在替换这个成功函数:

success: function(response){                    
    $(".content-full").html(response); 
}

进入这个:

success: function(response){
    if(response.success) $(".content-full").html(response);
    else alert('No results');
}

此处弃用&#39;通知&#39;对于mysql_函数:http://php.net/manual/en/changelog.mysql.php