0

我在理解如何传输 javascript(客户端)变量时遇到一些问题,以便它们可以从 php(服务器端)作为会话访问:在 PHP 中获取 iframe 的“src”值?

现在我处于使用 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” - 如果我用萤火虫检查它,我也可以看到它说它正确传递了它(也有 / 的转换)。

我发布到的脚本服务器端是这样的:

#session_write.php
<?php
session_start();
print_r($_GET['frameurl']);
if (isset($_GET['frameurl'])) 
{
$_SESSION['frameurl'] = $_GET['frameurl'];
print_r($_SESSION);
}
?>

发布到服务器上的那个 php 脚本将通过 javascopt 失败 - $_SESSION['frameurl'] 将是 '',但如果我前。像这样手动操作:(http):

//localhost/phpmenu/session_write.php?frameurl=lang%2Fen%2Fnew.htm

那么它将在 $_SESSION["frameurl"] 变量中正确设置。

我根本无法理解在浏览器中进行 javascript 发布和手动发布之间有什么不同,为什么它会导致我出现这个问题?

有人有想法吗?谢谢

4

3 回答 3

2

您正在使用.post,它执行 POST 请求,但是当您在地址栏中输入 URL 时,这是一个 GET 请求。

$_GET检索通过 GET 传递的任何参数,同时$_POST检索通过 POST 传递的任何参数。因此,如果您使用.postJavascript 但尝试$_GET在 PHP 中检索,它将无法正常工作。

于 2012-10-27T21:34:43.900 回答
0

当您将变量 POST 到 PHP 文件时,$_GET未设置。改为使用$_POST['frameurl']。此外,看起来您在frameclick结束post通话时缺少一个密切的括号。

于 2012-10-27T21:34:53.967 回答
0

您正在通过 POST 请求传递数据并检索所有 GET 请求。改为使用$_POST。您也可能对。。。有兴趣$_REQUEST

于 2012-10-27T21:45:33.810 回答