可以“动态Ajax”存在吗?一个更新自己?

时间:2013-09-11 16:21:55

标签: jquery ajax dynamic session-variables

有没有办法让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>

如果我正在尝试做的是什么,这段代码有什么问题?

1 个答案:

答案 0 :(得分:0)

您正尝试在仅支持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);
   }
});

我希望我能说清楚。