我有一个页面(父级),它通过弹出窗口(子)
打开第二页在第二页上,我有以下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
变量,为什么要将确切的脚本标记写入日志文件?
我怎样才能克服这个?
答案 0 :(得分:4)
当您echo
浏览器的值时,它将运行JavaScript并显示结果。
将文件保存到文件时,不会执行JavaScript。
在这两种情况下,都会输出完整的脚本,但浏览器实际上是在运行脚本,而文本编辑器则不会。
答案 1 :(得分:1)
将客户端上的数据发送到服务器。您可以使用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);
答案 2 :(得分:0)
好的,我通过改变url-string来完成所需的结果,该url-string用一个额外的变量(所需的变量)调用第二页然后,通过$ _GET,我检索这个值并且可以毫无问题地将它打印到我的日志文件中
非常感谢大家的快速回复:)