有没有办法让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);
}
});
我希望我把自己说清楚了。