0

投票フォームとしてカラーボックスを使用した単純な投票システムがあります。人が投票をクリックすると、vote.html?id = X(xは数字)に移動します。投票.htmlがカラーボックスに表示されます。カラーボックスでURLパラメータを取得しましたが、パラメータとしてidが見つかりません。IDをカラーボックスに渡す方法はありますか?これがコードです...

Javascript:

<script>
    function voteForShirt(shirtId) {
        alert("vote.htm?="+shirtId);
        $('#').colorbox();
        $.colorbox({href:"vote.html?id="+shirtId});
    }
</script>

以下は、カラーボックスに表示されるvote.htmlのJavascriptです。

<script type="text/javascript">
    function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
    vars[key] = value;
    });
    return vars;
    }

    var shirtId = getUrlVars()["id"];
    alert(shirtId);
    document.getElementById('title').innerHTML = "<h1>You're Voting for Shirt " + shirtId + "</h1>";    
</script>

ここでshirtIdに警告すると、未定義になります。

4

2 に答える 2

0

ajaxの代わりにiframeを使用する必要があるようです。ajaxを使用する場合、新しいウィンドウオブジェクトを作成していないため、window.locationは現在の場所を参照します(vote.htmlではありません)。

于 2012-10-08T22:42:06.593 に答える
0

正規表現の何が問題になっているのかわかりませんが、代わりにこの関数を使用してIDを解析してみてください。

<script type="text/javascript">
function getParameterByName(name)
{
  name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
  var regexS = "[\\?&]" + name + "=([^&#]*)";
  var regex = new RegExp(regexS);
  var results = regex.exec(window.location.search);
  if(results == null)
    return "";
  else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
 }
</script>

出典:Artem Barger

于 2012-10-08T05:45:09.187 に答える