我一直在努力学习AJAX,以便我可以简单地用数据库中的新文本动态更新网页,因为似乎所有的Ajax教程都是涉及将数据写入数据库的更复杂的示例。
我正在处理的页面只是一个PHP脚本,需要向其发布注册和ID号,并且该页面依次显示来自数据库的消息(经常更新)。我目前在页面顶部有一个“更新消息”按钮,该按钮发送命令以更新消息,但是需要刷新页面才能工作。
我只想使用ajax来动态刷新消息。这是我到目前为止所写的内容,基于我在使用Jquery Ajax从Mysql检索数据中发现的内容,但是由于我不知道如何将注册和id号作为参数传递给使用ajax的php脚本并显示响应。
请注意,该sendPushNotification功能是无关的并且可以正常工作(用于发送命令以更新消息)。
sendPushNotification
readmessages.php
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Inbox</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ }); function sendPushNotification(id){ var data = $('form#'+id).serialize(); $('form#'+id).unbind('submit'); $.ajax({ url: "send_message.php", type: 'GET', data: data, beforeSend: function() { }, success: function(data, textStatus, xhr) { $('.txt_message').val(""); }, error: function(xhr, textStatus, errorThrown) { } }); return false; } function updateText(registration, rowid) { $.ajax({ //create an ajax request to readmessages.php type: "GET", url: "readmessages.php", dataType: "html", //expect html to be returned success: function(response){ $("#responsecontainer").html(response); } }); } </script> </head> <body> <?php // receive data from HTML readmessages request $rName=$_POST["registration"]; //POST information required to read information from the database $rowId=$_POST["rowid"]; require_once 'access.php'; if (!userIsLoggedIn()) { include 'login.php'; exit(); } include_once './db_functions.php'; $db = new DB_Functions(); ?> <form id="<?php echo $rowId ?>" name="" method="post" onsubmit="return sendPushNotification('<?php echo $rowId ?>')"> <input type="hidden" name="message" value="readmessages" /> <input type="hidden" name="regId" value="<?php echo $rName ?>"/> <input type="submit" class="send_btn" value="Update Messages" onclick="return updateText(<?php echo $rName ?>, <?php echo $rowId ?>);"/> //Attempts to call function to update text once button is pressed (not functioning) <?php $messagelist = $db->getInbox($rName); //calls the database to retrieve messages echo nl2br($messagelist); //Displays message list that I want to update include './logout.php'; ?> </body> </html>
任何帮助将不胜感激!
编辑: 更新行以包含正确的引号:
<input type="submit" class="send_btn" value="Update Messages" onclick="return updateText('<?php echo $rName ?>', '<?php echo $rowId ?>')"/>
您需要将数据与ajax请求一起包括在内,
data: {registration: registration, rowid: rowid},
并将类型设置为POST,因为在php端您要检索POST变量。
像这样…
function updateText(registration, rowid) { $.ajax({ //create an ajax request to readmessages.php type: "POST", url: "readmessages.php", dataType: "html", //expect html to be returned data: {registration: registration, rowid: rowid}, success: function(response){ $("#responsecontainer").html(response); }