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(){ ... });