在第一页上,我具有以下功能:
<script>
function update() {
$("#notice_div").html('Loading..');
$.ajax({
type: 'GET',
dataType: 'json',
data: latestid,
url: '2includejson.php?lastid='+ latestid + '',
timeout: 4000,
success: function(data) {
$("#cont_div").html(data);
$("#cont_div").clone().prependTo($("#newdiv"));
$("#notice_div").html('');
$("#cont_div").html('');
window.setTimeout(update, 4000);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#notice_div").html('Timeout contacting server..');
window.setTimeout(update, 60000);
}
});
}
$(document).ready(function() {
update();
});
</script>
和一些PHP。
包含的文件:
<?
header("Content-Type: application/json", true);
$la = $_GET['lastid'];
include ("../../setup.php");
$jsonArray[] = array();
$count = 1; // first message is the newest on load
$get = $DB->query("SELECT * FROM board WHERE id>'$la' ORDER BY id DESC LIMIT 5", __FILE__, __LINE__);
while ($msg = $DB->fetch_array($get))
{
if($count == 1){
$latestid = $msg['id']; // newest message - this I need to pass to the other page
}
$count++;
$jsonArray = "$msg[msg]";
}
echo json_encode($jsonArray);
?>
我只是想学习如何使用ajax和jquery。
如您所见,我通过URL将Latestid作为js变量传递
网址:“ 2includejson.php?lastid ='+ Latestid +”,
我需要从包含的页面中更新/发布打包一个新值,但是我不知道该怎么做。在使用json之前,我可以用javascript覆盖它,但是现在我不知道...较新的值将再次以Latestid的形式发布。
最佳答案
您可以声明不带[]
的数组:
$jsonArray = array();
另外,您还应该将数据附加到数组中,而不是创建字符串:
$jsonArray[] = $msg['msg'];
最后:
$jsonArray['latestid'] = $latestid;
然后在JavaScript中,应声明
latestid
:var latestid;
在ajax函数内部,您应该仅将数据作为对象传递,而不是像现在这样两次。然后只需替换
latestid
,它已以JSON格式返回:...
data: {lastid: latestid},
url: '2includejson.php',
timeout: 4000,
success: function(data) {
latestid = data.latestid; // update latestid
...
}
...