一台服务器上的javascript post to.php文件不起作用-在浏览器中手动输入URL到相同的.php文件起作用
我在理解如何将javascript(客户端)变量传输到php(服务器端)作为会话时遇到了一些问题: 现在我的处境是,我使用firebug尝试调试正在发生的事情,但这毫无意义: 我有这个函数来更新iframe,我想在该iframe显示的页面上传递:一台服务器上的javascript post to.php文件不起作用-在浏览器中手动输入URL到相同的.php文件起作用,php,javascript,Php,Javascript,我在理解如何将javascript(客户端)变量传输到php(服务器端)作为会话时遇到了一些问题: 现在我的处境是,我使用firebug尝试调试正在发生的事情,但这毫无意义: 我有这个函数来更新iframe,我想在该iframe显示的页面上传递: function frameclick(pageurl) { $.post("session_write.php?", { frameurl : pageurl }
function frameclick(pageurl)
{
$.post("session_write.php?",
{
frameurl : pageurl
}
$("#iFrame1").attr('src', pageurl);
console.log ('<?php echo "logout:".$langpath.$_SESSION['frameurl'];?>');
}
然后它将在$\u SESSION[“frameurl”]变量中正确设置
我简直无法理解在浏览器中执行javascript post和手动执行javascript post有什么不同,为什么会导致这个问题
有人有想法吗?谢谢您使用的是执行post请求的
.post
,但是当您在地址栏中键入URL时,这是一个GET请求
$\u GET
检索通过GET传递的任何参数,而$\u POST
检索通过POST传递的任何参数。因此,如果您将.post
与Javascript一起使用,但尝试在PHP中使用$\u GET
进行检索,则此操作将不起作用。当您将变量发布到PHP文件时,未设置$\u GET
。改用$\u POST['frameurl']
。此外,您似乎在框架中缺少一个关闭参数单击结束post
调用。您正在通过
POST
请求并检索所有GET请求。改用$\u POST
。您可能还对$\u请求感兴趣,只需阅读您的javascript即可-您的$。post
也不会关闭。但是请阅读下面的答案以获得解决方案,您的PHP正在访问GET
变量,您的javascript正在POST
ing它。在PHP中,您可以将$\u GET
更改为$\u REQUEST
,这样它可以同时用于GET和POST,但这不是建议的,所以请将其更改为$\u POST
,这样它可以用于JS,但您无法通过键入URL来测试它。应该早点问我,我已经连续几个小时对这篇文章发牢骚了:(删除了snark。堆栈溢出不是snark的地方。我现在觉得很愚蠢:(只是试图更改我的帖子以获得它,它工作了。这是一个复制/粘贴错误。但也非常感谢。)
#session_write.php
<?php
session_start();
print_r($_GET['frameurl']);
if (isset($_GET['frameurl']))
{
$_SESSION['frameurl'] = $_GET['frameurl'];
print_r($_SESSION);
}
?>
//localhost/phpmenu/session_write.php?frameurl=lang%2Fen%2Fnew.htm