Jquery load()和PHP变量

use*_*856 8 php variables jquery load

如果我用Jquery .load(file.php)加载一个PHP页面,包含的文件是否可以使用在调用load()的页面上定义的php变量?

the*_*ect 17

不,您必须将要使用的变量传递给您file.php:

$('#yourdiv').load('file.php?var1=xyz&var2=xyz&var3=xyz');
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的file.php中获取这些:

$var1 = $_GET['var1'];
$var2 = $_GET['var2'];
$var3 = $_GET['var3'];
Run Code Online (Sandbox Code Playgroud)

如果有很多变量,那么使用POST方法:

$('#yourdiv').load('file.php', {var1:x, var2:y, var3:z})
Run Code Online (Sandbox Code Playgroud)

然后在file.php中获取变量:

$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];
Run Code Online (Sandbox Code Playgroud)


Naf*_*Kay 14

你误解了事情的运作方式.

  • PHP 向客户端发出任何浏览器响应之前运行,并且所有代码都在服务器上运行.在运行所有PHP代码之后,销毁PHP文件中声明的变量; 他们"消失了".
  • 浏览器响应开始 JavaScript运行,所有代码都在客户端上运行.通过"加载"PHP文件的输出结果,您将无法访问PHP的变量,只能访问输出.

如果要将某些变量从PHP传输到JavaScript,可以在PHP脚本中将一些输出转储到JSON中,如下所示:

<?PHP
    header("Content-Type: application/json");

    $myVariable = "hello world";

    echo json_encode(array(array("myVariable" => $myVariable)));

    /* Output looks like this:
       [
           {
               "myVariable": "hello world"
           }
       ]
    */
?>
Run Code Online (Sandbox Code Playgroud)

您的JavaScript/JSON应该如下所示:

$.getJSON("test.php", function(result) {
    console.log(result[0].myVariable);
});
Run Code Online (Sandbox Code Playgroud)

那有意义吗?


kon*_*ddy 6

是的,使用data参数,请参阅http://api.jquery.com/load/:

$('#someelement').load(
    "test.php", 
    {
        'key1': '<?php echo $value1; ?>',
        'key2': '<?php echo $value2; ?>'
    } 
);
Run Code Online (Sandbox Code Playgroud)

参数将发布到文件中,test.php并可通过以下方式访问:

$_POST['key1']
$_POST['key2']
Run Code Online (Sandbox Code Playgroud)