如果我使用Jquery .load(file.php)加载PHP页面,那么包含的文件是否可以使用在页面上定义的调用load()的php变量?Jquery load()和PHP变量
回答
你误解是如何工作的。
- PHP运行之前的任何浏览器响应颁发给客户端,所有的代码运行服务器上。所有PHP代码运行后,PHP文件中声明的变量将被销毁;他们“消失”。
- JavaScript运行后浏览器响应已经开始,所有代码都在客户端上运行。通过“加载”PHP文件的输出结果,您将无法访问PHP的变量,只能访问输出。
如果你想从PHP转移某些变量的JavaScript,你可以放弃一些输出到JSON在你的PHP脚本,像这样:
<?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);
});
这有道理吗?
我喜欢你清楚的解释*为什么*它不会起作用,这是wny我upvoted的答案。但是,使用简单的非转义'echo'语句生成JSON的提示非常可怕;这就是为什么[json_encode()](http://php.net/json_encode)存在。 –
对,我的道歉。我只是试图让它容易理解。自从我使用PHP以来已经有一段时间了,而且我过去并不需要从PHP序列化JSON,所以我的不好。 –
编辑我的答案,使用'json_encode'。 –
变量范围PHP
脚本加载的JavaScript
与载入PHP
脚本的页面不同,所以答案是否定的。
但您可以定义全局变量或使用超级全局变量(如$_GET
,$_POST
等)来获取所需内容。
您可以使用PHP动态地定义Javascript在页面中传递的变量。 –
@WatermarkStudios由Javascript传递的变量与OP所要求的不同:'包含的文件是否可以使用在调用load()'的页面上定义的php变量。 – fardjad
您可以完全按照TK Kocheran描述的方式使用它们(尽管强烈建议使用json_encode())。你说得对,javascript不能直接访问PHP变量,因为在RESPONSE循环中加载的顺序是一样的,但添加一行PHP来定义一个与PHP变量具有相同值的Javascript变量是没有听说过的,也没有这是不好的做法,除非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'];
This works too ...我只是用file.php替换''file.php?var1 = xyz&var2 = xyz&var3 = xyz'' var1 = {$ xyz}&var2 = {$ xyz}&var3 = {$ xyz}''如果您使用从当前PHP文件填充的变量。同样,整条线将不得不从PHP标签中回应。 –
我很欣赏这种方法,因为它使用了原生的jQuery'load'函数。 – RCNeil
您将不得不通过.load函数将这些变量传递给加载的PHP文件。
例子:
$("#objectID").load("test.php", { 'choices[]': ["{$choice1}", "{$choice2}"] });
在当前的PHP文件中定义的变量将成为加载新的PHP文件中的Javascript的一部分。
当然这条线将不得不从PHP标签中回应出来。 –
是,使用数据参数,请参阅http://api.jquery.com/load/:
$('#someelement').load(
"test.php",
{
'key1': '<?php echo $value1; ?>',
'key2': '<?php echo $value2; ?>'
}
);
参数被发布到文件test.php
并作为访问:
$_POST['key1']
$_POST['key2']
这是一个干净的解决方案,但请记住,如果您想使用当前PHP文件中定义的变量,则必须使用PHP变量中回显的PHP变量替换值。 –
JQuery加载函数的第二个参数(params)应该是对象或回调函数,但也可以是空字符串。根据不同的情况,负载会发送帖子或获取请求。
我的想法是在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(){
...
});
- 1. jquery .load()与多个变量
- 2. jQuery .load,变量为url
- 3. jQuery的.load POST变量
- 4. jQuery .load发送变量
- 5. PHP会话变量和jQuery
- 6. jQuery中的JavaScript变量.load()参数
- 7. 将jQuery .load()存储到变量
- 8. 将变量传递给jQuery .load函数
- 9. 传递变量.load(HTML)jQuery中
- 10. 将变量传递给PHP使用jQuery .load
- 11. jquery .load()和IE
- 12. 使用Jquery .load()函数获取变量和页面片段
- 13. 传递序列化数据和变量与jQuery .load()
- 14. jQuery与.load()和PHP表单的问题
- 15. jQuery .load和PHP会话开始
- 16. jQuery的PHP变量
- 17. .scrollTop和.load jQuery的
- 18. jQuery事件和.load()
- 19. Jquery load()和ui-widget
- 20. 的JQuery load()和.prepend()
- 21. .load()和.fadeIn jQuery中
- 22. jQuery的.load().load()
- 23. jQuery .load()未运行PHP
- 24. jQuery .load PHP into Div -not working-
- 25. 的onclick .load()2个变量
- 26. 变量和jQuery
- 27. jQuery手机和PHP定义变量
- 28. 使用jquery和ajax传递变量php
- 29. IE9和jQuery 1.6.1和.load()
- 30. 将jQuery变量赋值给php变量
喜@ user1091856 - 欢迎SO。如果它适用于你(不仅仅是这个问题,而且还包括你以前的任何四个问题),接受一个答案是一个好习惯。干杯! – themerlinproject