"dynamic Ajax"存在吗?一个自我更新的?



有没有办法让ajax在执行时更新自己的代码?我经常与会议打交道,如果可能的话,这将大大减轻我的工作。这就像我试图(不成功)做的事情:

<!-- index.php (lots of code omitted) -->
<div id="ajax"><?php include 'ajax.php' ?></div>

<!-- ajax.php -->
<?php
session_start();
if(!isset($_SESSION["test"])) $_SESSION["test"] = "not set";
else $_SESSION["test"] = "set";
?>
<script>
$('#somebutton').click(function(){
    $.ajax({
        url: 'ajax.php',
        dataType: 'html',
        success: function(result){
            $('#ajax').html(result);
            $('#somediv').html('<?php echo $_SESSION["test"] ?>');
        }
    });
});
</script>

如果我尝试做的事情是可能的,那么这段代码有什么问题?

您正在尝试在仅支持 javascript、html 和 css 的客户端上执行 php 服务器端脚本。

<?php echo $_SESSION["test"] ?>

注入元素中的这个php代码永远不会执行,它像Html一样解析。您需要发出两个 ajax 请求来解决您的问题。

您需要创建另一个 php 文件并对此执行另一个 ajax 请求。

例如,该文件可以是:

ajax2.php

<?php
start_session();
if(isset($_SESSION["test"))
    echo $_SESSION["test"] ;
?>

JavaScript:

$('#somebutton').click(function(){
   var ajaxCompleted = 0;
   var result1 = '';
   var result2 = '';
   //First call
   $.ajax({
       url: 'ajax.php',
       dataType: 'html',
       success: function(result){
           result1 = result;
           ajaxCompleted++;
           if(ajaxCompleted == 2){
               printResult();
           }
       }
   });
   //Second call
   $.ajax({
       url: 'ajax2.php',
       dataType: 'html',
       success: function(result){
           result2 = result;
           ajaxCompleted++;
           if(ajaxCompleted == 2){
               printResult();
           }
       }
   });
   function printResult(){
      $('#ajax').html(result1);
      $('#somediv').html(result2);
   }
});

我希望我把自己说清楚了。

最新更新