用Javascript和传递的数据填充表单输入

用Javascript和传递的数据填充表单输入,javascript,jquery,wordpress,forms,aweber,Javascript,Jquery,Wordpress,Forms,Aweber,这让我发狂,我一直在寻找解决方案,但运气不好 我有一个表单注册页面,它使用一个Aweber注册表单-它收集全名和电子邮件地址 此表单将被提交并重定向到第二页(确认页),并传递URL末尾的值: ?email=dummyemail%40gmail.com&from=dummyemail%40gmail.com&listname=awlist4009916&meta_adtracking=stillhead&meta_message=1&meta_require

这让我发狂,我一直在寻找解决方案,但运气不好

我有一个表单注册页面,它使用一个Aweber注册表单-它收集全名和电子邮件地址

此表单将被提交并重定向到第二页(确认页),并传递URL末尾的值:

?email=dummyemail%40gmail.com&from=dummyemail%40gmail.com&listname=awlist4009916&meta_adtracking=stillhead&meta_message=1&meta_required=name%2Cemail&meta_split_id=&meta_tooltip=&meta_web_form_id=1277063733&name=Example%20Name
现在,Aweber提供了一块Javascript放在确认页面上,它似乎抓住了表单数据,并使其可用于页面

<script type="text/javascript">
 var formData = function() {  var query_string = (location.search) ? ((location.search.indexOf('#') != -1) ? location.search.substring(1, location.search.indexOf('#')) : location.search.substring(1)) : '';  
var elements = [];  
if(query_string) {     
    var pairs = query_string.split("&");     
    for(i in pairs) {     
        if (typeof pairs[i] == 'string') {           
            var tmp = pairs[i].split("=");           
            var queryKey = unescape(tmp[0]);           
            queryKey = (queryKey.charAt(0) == 'c') ? queryKey.replace(/\s/g, "_") : queryKey;   
            elements[queryKey] = unescape(tmp[1]);      
             }    
       } 
 }  
return {     
    display: function(key) {         
        if(elements[key]) {           
             document.write(elements[key]);         
         } 
         else {         
               document.write("<!--If desired, replace everything between these quotes with a default in case there is no data in the query string.-->");          
          }     
  }   
} 
}
(); </script>
但这失败了

然后我试着

$( document ).ready(function() {
    var emailaddr = formData.display("email");
    $( "#swpm-5" ).val( emailaddr );
});
但还是没有运气

谁能帮我一下吗?我觉得我一定错过了一些重要的事情。

试试这个:

function getQueryStringAsObject(uri) {
    var uri = uri || location.href;
    var qsAsObject = {};
    uri.replace(
        /([^?=&]+)(?:=([^&]*))?/g,
        function($0, $1, $2) { qsAsObject[$1] = decodeURIComponent($2); }
    );
    return qsAsObject;
}

// You can replace next line by
// $( document ).ready(function() {
jQuery(function($) { 
    var qsAsObject = getQueryStringAsObject();
    $('#swpm-5').val(qsAsObject.email);
});

忘记“Aweber提供的Javascript块”;-)

现在,这就是进步-谢谢!现在唯一的问题是该字段填充了
%40
而不是
@
有什么想法吗?是的,对不起,我使用了
decodeURI
而不是
decodeURIComponent
。现在应该用我编辑过的答案来解决了哦,天哪,你不知道我有多感激你。我对终于有了一个解决方案而兴奋不已,这是不对的!?非常感谢。
$( document ).ready(function() {
    $('#swpm-5').val(formData.display("email"));
});
$( document ).ready(function() {
    var emailaddr = formData.display("email");
    $( "#swpm-5" ).val( emailaddr );
});
function getQueryStringAsObject(uri) {
    var uri = uri || location.href;
    var qsAsObject = {};
    uri.replace(
        /([^?=&]+)(?:=([^&]*))?/g,
        function($0, $1, $2) { qsAsObject[$1] = decodeURIComponent($2); }
    );
    return qsAsObject;
}

// You can replace next line by
// $( document ).ready(function() {
jQuery(function($) { 
    var qsAsObject = getQueryStringAsObject();
    $('#swpm-5').val(qsAsObject.email);
});