在第一页上,我具有以下功能:

 <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
    ...
}
...

10-06 00:33