我有一个页面(父)通过弹出窗口打开第二个页面(子)
在第二页上,我有以下PHP代码,它从父页获取HTML元素的值:
$var=print_r("<script type='text/javascript'>var x=window.opener.document.getElementsByName('name1');document.write(x[0].value)</script>",true);
当我回显变量$var
时,我得到了我所期望的结果。因此:
echo "test=" . $test;
…例如,在页面上打印"费用"。
一切顺利。
问题是当我试图将这个变量写入文件时,如:
$f=fopen("/mylog.txt","w+");
fwrite($f, $test);
fclose($f);
…那么,代替$test
的实际值(例如费用),
我在我的日志文件中得到整个脚本标记,因此:
<script type='text/javascript'>var x=window.opener.document.getElementsByName('name1');document.write(x[0].value)</script>
假设具有"true"参数的print_r
返回值给我的$test
变量,为什么要将确切的脚本标签写入日志文件?
我怎样才能克服这个?
当您将该值echo
发送给浏览器时,它将运行JavaScript并显示结果。
当你把它保存到一个文件时,JavaScript不会被执行。
在这两种情况下,都输出完整的脚本,但是浏览器实际上在运行脚本,而文本编辑器不会。
将客户端上的数据发送到服务器。您可以使用Ajax(如下所示)或表单。
$.post('myPHPfile.php',{name:window.opener.document.getElementsByName('name1')});
myPHPfile.php
$test=$_POST['name'];
$f=fopen("/mylog.txt","w+");
fwrite($f, $test);
fclose($f);
好的,我通过修改url字符串完成了期望的结果,该字符串使用一个额外的变量(期望的变量)调用第二页,然后,通过$_GET,我检索了这个值,并可以将它毫无问题地打印到我的日志文件中。
非常感谢你们所有人的快速回复:)