Jquery load() and PHP variables


Jquery load() and PHP variables

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

不,你必须把你想要使用的变量传递给你的file.php:

$('#yourdiv').load('file.php?var1=xyz&var2=xyz&var3=xyz');

可以在file。php:

中获取
$var1 = $_GET['var1'];
$var2 = $_GET['var2'];
$var3 = $_GET['var3'];

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

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

然后在file.php:

中获取变量
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];

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

  • 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"
           }
       ]
    */
?>

你的JavaScript/JSON应该看起来像这样:

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

明白了吗?

是,使用data参数,参见http://api.jquery.com/load/:

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

这些参数被发送到文件test.php中,可以通过以下方式访问:

$_POST['key1']
$_POST['key2']

您必须通过.load函数将这些变量传递给加载的PHP文件。

的例子:

$("#objectID").load("test.php", { 'choices[]': ["{$choice1}", "{$choice2}"] } );

当前PHP文件中定义的变量将成为加载新PHP文件的Javascript的一部分。

JavaScript加载的PHP脚本中的变量作用域与加载PHP脚本的页面不同,因此答案为no

,但你可以定义全局变量或使用超全局变量,如($_GET, $_POST等)来获得你想要的

JQuery加载函数的第二个参数(params)应该是一个对象或回调函数,但也可以是一个空字符串。这取决于load发送post或get请求。

我有一个想法,在get和post之间自动切换,(例如,如果cookie设置),因为get更快,更容易缓存,而post更节省。

将包含回调函数内部内容的加载函数写两次比写这样的东西更糟糕:

//get
var url="cache_dir/my_bag.html";
var params="";
if(document.cookie){
  //post
  url="post.php";
  params="{my:bag}";
  }
$(selector).load(url,params,function(){
...
  });