我在理解如何传输 javascript(客户端)变量以便可以从 php(服务器端)作为 session 访问它们时遇到了一些问题:get an iframe's "src" value in PHP?
现在我处于一种情况,我使用 firebug 尝试调试正在发生的事情,但它没有意义:
我有这个函数来更新 iframe,并且我想传递该 iframe 正在显示的页面:
function frameclick(pageurl)
{
$.post("session_write.php?",
{
frameurl : pageurl
}
$("#iFrame1").attr('src', pageurl);
console.log ('<?php echo "logout:".$langpath.$_SESSION['frameurl'];?>');
}
pageurl 是前。 “/lang/en/new.htm” - 如果我用 firebug 检查它,我也可以看到它说它正确地传递了它(也通过/的转换)。
我发布到的脚本服务器端是这样的:
#session_write.php
<?php
session_start();
print_r($_GET['frameurl']);
if (isset($_GET['frameurl']))
{
$_SESSION['frameurl'] = $_GET['frameurl'];
print_r($_SESSION);
}
?>
通过 javascrot 发布到服务器上的 php 脚本将失败 - $_SESSION['frameurl'] 将是 '',但如果我是。像这样手动执行: (http):
//localhost/phpmenu/session_write.php?frameurl=lang%2Fen%2Fnew.htm
然后它将在 $_SESSION["frameurl"] 变量中正确设置。
我根本无法理解执行 javascript post 和在浏览器中手动执行它之间有什么不同,以及为什么它会导致我出现这个问题?
有人有想法吗?谢谢
最佳答案
您正在使用 .post
,它执行 POST 请求,但当您在地址栏中输入 URL 时,这是一个 GET 请求。
$_GET
检索通过 GET 传递的任何参数,而 $_POST
检索通过 POST 传递的任何参数。因此,如果您在 Javascript 中使用 .post
,但尝试在 PHP 中使用 $_GET
进行检索,则不会起作用。
关于php - javascript post 到 .php 文件一台服务器不起作用 - 在浏览器中手动输入 URL 到相同的 .php 可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104366/