【问题标题】:How to properly pass url parameters in jquery mobile如何在jquery mobile中正确传递url参数
【发布时间】:2012-01-19 08:14:33
【问题描述】:

我想知道您能否告诉我在将 url 中的 url 参数传递到我的 jquery 移动运行网站上的特定页面时我能做些什么。

所以我在站点 A 上有一个链接,如下所示: http://www.m.mysite.org/donate?s_src=1234&s_subsrc=12345

如果有人点击该链接,我会被带到我的移动网站,那里有一份捐赠表格。在捐赠表格中,我有两个隐藏字段,称为

<input type="hidden" id="source" value="" />
<input type="hidden" id="sub_source" value="" />

我想获取这些参数的值并填充那些可能为空或不为空的值。这是我必须获取这些参数及其值的脚本:

var source = getUrlVars()["s_src"];
var subsourc = getUrlVars()["s_subsrc"];
if (source != "" && source != 'undefined' && source != null) {
    document.getElementById('source').value = source;
}
if (subsourc != "" && subsourc != 'undefined' && subsourc != null) {
    document.getElementById('sub_source').value = subsourc;
}

function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
    hash = hashes[i].split('=');
    vars.push(hash[0]);
    vars[hash[0]] = hash[1];
}
return vars;
}

问题是这些值没有应用于那些隐藏的输入字段。

【问题讨论】:

  • 您确定您的getUrlVars() 功能正常吗?
  • 我创建了一个plug-in,如果您仍在为此苦苦挣扎,它可能会对您有所帮助。也许我会更改它,但请注意我在插件中定义了一个函数getUrlVars(),这可能会导致您的函数出现问题

标签: javascript url jquery


【解决方案1】:

根据我对 Lawson 的回答的评论,您可以使用 ready() 函数。另外,我现在使用 jQuery 来设置隐藏输入的值,而不是直接使用 document 对象。

jQuery.ready(function() {
    var source = getUrlVars()["s_src"];
    var subsourc = getUrlVars()["s_subsrc"];
    if (source != "" && source != 'undefined' && source != null) {
        jQuery("#source").val(source);
    }
    if (subsourc != "" && subsourc != 'undefined' && subsourc != null) {
        jQuery("#sub_source").val(subsourc);
    }
});

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

【讨论】:

    【解决方案2】:

    我认为这里的问题是您试图在 jQuery mobile 完全操纵 DOM 之前将值写入输入。尝试将代码的顶部部分包装在调用 onload 的函数中。

    function onload()
    {
    var source = getUrlVars()["s_src"];
    var subsourc = getUrlVars()["s_subsrc"];
    
    if (source != "" && source != 'undefined' && source != null) {
    document.getElementById('source').value = source;
    }
    
    if (subsourc != "" && subsourc != 'undefined' && subsourc != null) {
        document.getElementById('sub_source').value = subsourc;
    }
    }
    function getUrlVars()
    {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
    }
    ###
    <body onload="onload()">
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 2013-03-14
    • 2018-07-05
    相关资源
    最近更新 更多