我有一些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);
?>
是否有其他方法可以执行此操作或我需要纠正的工作方式?
由于
答案 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