Jquery load()和PHP变量

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

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

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

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

 $myVariable))); /* Output looks like this: [ { "myVariable": "hello world" } ] */ ?> 

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

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

那有意义吗?

不,您必须将要使用的变量传递给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']; 

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

 $('#someelement').load( "test.php", { 'key1': '', 'key2': '' } ); 

参数发布到文件test.php ,可以访问:

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

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

例:

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

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

JavaScript加载的PHP脚本中的变量范围与加载PHP脚本的页面不同,所以答案是否定的。

但你可以定义全局变量或使用超级全局变量,如( $_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(){ ... });