将变量从URL传递到PHP,再传递到Javascript,并在输入字段中显示值
我有一个电子邮件订户表单,我正试图用电子邮件地址(将显示在表单中)预先填充该表单 要使用的电子邮件地址包含在URL中将变量从URL传递到PHP,再传递到Javascript,并在输入字段中显示值,php,javascript,wordpress,parameter-passing,Php,Javascript,Wordpress,Parameter Passing,我有一个电子邮件订户表单,我正试图用电子邮件地址(将显示在表单中)预先填充该表单 要使用的电子邮件地址包含在URL中 http://www.domain.com/page?email=joe@emailaccount.com 表单中的输入字段为: <input class="text" id="awf_field-48578149" type="text" name="email" value="" tabindex="501" /> 该页面位于一个运行Wordpres
http://www.domain.com/page?email=joe@emailaccount.com
表单中的输入字段为:
<input class="text" id="awf_field-48578149" type="text" name="email" value="" tabindex="501" />
该页面位于一个运行Wordpress作为CMS的站点上,因此由于安全问题,我不想使用“允许PHP”插件执行PHP。我尝试创建一个定制的PHP页面模板,包括用PHP分配变量的语言,然后通过javascript分配HTML
首先,我创建了一个custom-page.php页面模板,包括以下内容:
<?php
/*
Get email from URL and set to email1 variable
*/
$email1 = $_GET['email'];
?>
<script type="text/javascript">
var email2 = <?php echo json_encode($email1); ?>;
document.getElementById("awf_field-48578149").value = email2;
</script>
var=2;
document.getElementById(“awf_字段-48578149”)。value=email2;
接下来,我使用custom-page.php模板将表单代码包含在Wordpress页面上
挑战在于当页面加载(预填充)时,获取变量值以显示在输入框中
我绝对不是一个编码员,但我会感激你的帮助。有什么想法吗
以下是表单代码(在使用模板的Wordpress页面上):
姓名:
电邮:
我认为应该是:
<script type="text/javascript">
var email2 = "<?php echo $_GET['email']; ?>";
document.getElementById("awf_field-48578149").value = email2;
</script>
var=“2”;
document.getElementById(“awf_字段-48578149”)。value=email2;
尝试将代码包装到:
jQuery(document).ready(function(){ //code here });
这将使浏览器等待执行代码,直到页面完成加载。此外,您可能需要考虑确保传递给Javascript的字符串只是一个电子邮件地址,而不是保护自己免受跨站点脚本攻击的代码 最优雅的解决方案是id值可以更改的解决方案(因为电子邮件服务提供商为您创建的每个电子邮件选择加入表单提供了唯一的值),但现在只需能够预填充和显示电子邮件值就好了。您为什么要使用json_encode,为什么你不在验证后直接将值作为电子邮件回显到表单中呢?表单不在模板中,它在使用模板的页面上,所以我不能使用,因为我不能在页面上执行PHP代码。我使用json_编码是基于我在类似情况下看到的另一个答案。我不是一个编码员,所以我正在一起破解。我会省略输入字段中的value=”“字段吗?如果是,它将如何显示分配的值?我尝试过,但它没有在表单输入框中显示电子邮件的值。第二行代码是设置
输入的值。我不知道为什么它不适合你。javascript控制台中有错误吗?您确定$\u GET['email']
不是空的吗?是的,文档正下方显示了一个错误“未捕获类型错误:无法将属性'value'设置为null”。getElement。。。当我使用代码时:var email2=“”;document.getElementById(“awf_字段-48578149”)。value=email2代码>脚本和表单都在同一个文件中,对吗?您应该将此脚本放在页面的标题部分,或者放在
前面。执行脚本时,DOM
似乎没有加载。
jQuery(document).ready(function(){ //code here });