[英]AJAX return PHP data to page
根据一些研究,我改变了方法,但得到了部分结果。
数据库:
+--------------------------------------------------+
| id | date | objet | contenu | lu |
+--------------------------------------------------+
| 1 | 2013-01-20 | msg1 | msg1_content | 0 |
| 2 | 2013-01-20 | msg2 | msg2_content | 0 |
| 3 | 2013-01-20 | msg3 | msg3_content | 0 |
+--------------------------------------------------+
链接:
<a href="javascript:void(0);" onclick="markAsRead('.$message['id'].');">View'</a>
JS / AJAX:
function markAsRead(id)
{
$.ajax(
{
type: "GET",
url: 'php/messagerie.php',
data: "id=" + id, // appears as $_GET['id'] @ ur backend side
success: function(data)
{
// data is ur summary
$('#contenu').html(data);
}
});
}
PHP(php / messagerie.php)
$q = intval($_GET['id']);
// connect to db (of course not shown here)
if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
$sql="SELECT * FROM coq_messagerie WHERE id = '".$q."'";
$lu = mysqli_query($mysqli, "UPDATE ".DB_PREFIX."messagerie SET lu='1' WHERE id='$q' LIMIT 1");
$result = mysqli_query($con,$sql);
echo "<table border='1' width='100%'>
<tr>
<th>id</th>
<th>date</th>
<th>objet</th>
<th>contenu</th>
<th>lu</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['date'] . "</td>";
echo "<td>" . $row['objet'] . "</td>";
echo "<td>" . $row['contenu'] . "</td>";
echo "<td>" . $row['lu'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
当我查找id
2或3时,我目前仅检索<th>
而不是信息,但是正在获取id
1的信息。这怎么只能部分工作?
为了在页面上显示动态信息,我使用了一些代码片段,这些代码应该从基本HTML链接收集数据,该HTML链接分析并返回当前页面上的数据。 当然,这似乎非常基础,但是作为我的第一个AJAX脚本,我将不胜感激。
HTML链接:
$output .= '<a onclick="markAsRead('.$message['id'].'); return false;">'.View.'</a>';
注意:该链接按预期收集id
字段。
JS / AJAX代码:
function markAsRead(str) {
console.log("starting");
if (str=="")
{
console.log("string empty");
document.getElementById("contenu").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
console.log("on ready state change");
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("contenu").innerHTML=xmlhttp.responseText;
}
else
{
console.log("seems to returning information");
var abc = "<h1>Huh.</h1>";
document.getElementById("contenu").innerHTML=abc;
}
}
xmlhttp.open("GET","php/messagerie.php?q="+str);
xmlhttp.send();
}
注意: console.log('###_'+str)
用于查看代码崩溃的位置。 所有记录均正确(105、107、109)。
PHP( php / read.php )
// connect to db (of course not shown here)
$message = $GET["messageid"];
$lu = mysqli_query($mysqli, "UPDATE messages SET lu='1' WHERE id='$message' LIMIT 1");
if(!$lu)
{
echo "Update error";
exit;
}
else
{
$data = mysqli_query($mysqli, "SELECT * FROM messages WHERE id='$message' LIMIT 1");
while($row = mysqli_fetch_array($data))
{
echo $row["contenu"];
}
}
注意: $lu
已更新,这使我相信问题是在while/echo
区域还是在我的AJAX返回中。
starting
on ready state change
seems to returning information
-> GET ***/php/messagerie.php?q=3
** params -> q 3 **
** empty response **
** empty HTML **
on ready state change
seems to returning information
on ready state change
我要去哪里错了?
$message = $GET["messageid"];
应该
$message = $_GET["messageid"];
找到解决方案! 这将更新字段值以将邮件标记为已读,并在适当的div中显示该邮件。
在AJAX请求中,缺少的参数true
随查询一起添加。
function markAsRead(str)
{
if (str=="")
{
document.getElementById("contenu").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("contenu").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","php/messagerie.php?q="+str,true); // added ",true"
xmlhttp.send();
}
$q = intval($_GET['q']);
$con = mysqli_connect('','','',''); // values hidden here for obvious reasons
mysql_set_charset('utf8',$con);
if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
$sql="SELECT * FROM messages WHERE id = '".$q."'";
$result = mysqli_query($con,$sql);
$update = mysqli_query($con, "UPDATE messages SET lu='1' WHERE id='$q'");
if(mysqli_num_rows($result) > 0)
{
echo "<table border='1'>
<tr>
<th>id</th>
<th>date</th>
<th>objet</th>
<th>contenu</th>
<th>lu</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['date'] . "</td>";
echo "<td>" . $row['objet'] . "</td>";
echo "<td>" . $row['contenu'] . "</td>";
echo "<td>" . $row['lu'] . "</td>";
echo "</tr>";
}
echo "</table>";
}
mysqli_close($con);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.