从外部代码更新PHP变量


update a php variable from external code

我有一个问题,有一种方法来更新$错误时,他的值在外部listpagprincin .php改变?

<div id="statoPag">
    <h3> Stato : <?php echo $error; ?> </h3>
</div>
<div class="headerCont">
    <?php
        include('procedure/listPagPrinc.php');
    ?>
</div>

不是这样的。把这些HTML/PHP文件想象成办公室打印机,一旦它打印出每一行,您就不能"返回"并在它上面打印

在本例中,在procedure/listPagPrinc.php中调用任何内容之前,所有前5行都被运行并有效地"固定不变"。

如果,这只是猜测,你不能简单地包括procedure/listPagPrinc.php在你渲染$error之前,因为它也打印额外的HTML,你只需要封装它的代码在函数中尽可能好:一个设置$error的值,和一个单独的输出你需要的HTML。

您需要更新文本标签的内容;你可以在运行时使用jQuery。如果在应用程序页面的生命周期内更改了某些标记,并且您不希望从头重新加载整个页面,那么这是首选的方法。

在本例中,可以从listPagPrinc.php输出一些Javascript代码:

echo <<<JAVA1
<script>
    alert("Ciao, mondo");
</script>
JAVA2;

或者在你的情况下使用jQuery

echo <<<JAVA2
<script>
    $('#statoPag h3').text("Errore!");
</script>
JAVA2;

很可能需要调用jQuery的onDocumentReady函数,以确保它执行。

一个更好更快的方法(正如@arkascha所观察到的,更好更健壮):你可以从listpagPrinc.php或从包装器生成头文件。

// file listPagPrincWrapper.php, replace your current file
// Ideally listPagPrinc could return a text value. In case it is
// printing it, as seems likely, we capture the output. This way
// we don't neet to modify the existing code.
ob_start();
include('procedure/listPagPrinc.php');
$lpp = ob_get_clean();
// At the end, we do the output part.
print <<<HTML
<div id="statoPag">
    <h3> Stato : {$error}</h3>
</div>
<div class="headerCont">{$lpp}</div>
HTML;