0

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

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

4

1 回答 1

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);
   }
});

我希望我说清楚了。

于 2013-09-11T16:27:13.647 回答