2012-01-18 12 views
0

jqueryモバイルランサイトの特定のページにURLのurlパラメータを渡すことについて、私ができることについていくつかの洞察を与えることができるかどうかは疑問でした。jqueryモバイルでurlパラメータを正しく渡す方法

だから私はこのようになり、サイトAの上に住んでリンクを持っている: http://www.m.mysite.org/donate?s_src=1234&s_subsrc=12345

を誰かがそのリンクをクリックした場合、私はその後、私は寄付の形を持っている私のモバイルサイトに取られています。寄付の形の中に、私は2つの隠しフィールドを持って、私はそれらのパラメータの値を取得し、多分空またはないそれらの値を埋めたい

<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; 
} 

問題は、これらの値は、これらの隠された入力フィールドに適用されていないことです。

+0

あなたの 'getUrlVars()'関数は機能していると確信していますか? – Jivings

+0

まだ苦労している場合は、[プラグイン](https://github.com/CameronAskew/jquery.mobile.paramsHandler)を作成しました。おそらく私はそれを変更するつもりですが、あなたの関数で問題を引き起こす可能性のあるプラグインに '' getUrlVars() ''関数を定義することに注意してください。 –

答えて

1

私はLawsonの答えに対して、ready()機能を使用することができます。また、私は今、documentオブジェクトを直接使用するのではなく、隠し入力の値を設定するためにjQueryを使用しています。

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; 
} 
1

ここでの問題は、jQueryモバイルが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()"> 
+1

以上、jQueryの精神で、 'ready()'機能http://api.jquery.com/ready/ – dana

+0

お返事ありがとうございます! – TikaL13

関連する問題