2

この質問が以前にもあったことは知っていますが、これまでに投稿されたすべての解決策に問題がありました。次のような URL があります。

http://localhost:3000/virgil/1/render_lesson?toggle=view

これは AJAX を介した Rails 呼び出しですが、それは問題ではありません。「トグル」の変数を取得するはずの関数を試すたびに、コンソールログに出力すると、代わりに「未定義」になります。この機能を試してみました

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

そして、私が電話すると、console.log(getUrlVars());私は得る["http://localhost:3000/"]

しかし、私が電話するとき、私console.log(getUrlVars()["toggle"]);は単に取得しますundefined

どんな助けにも感謝します!

編集:

私のコードの関連部分を追加します。これは、AJAX を使用して呼び出しを行う Rails アプリケーションです。

<%= link_to 'View Lessons', render_lesson_virgil_path(course, :toggle => :view), :remote => true, :class => 'toggle_lesson', :id => "toggle_lesson#{course.id}" %>

そして、それが呼び出すjavascriptファイルで:

function $_GET( name ){
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

console.log($_GET('toggle')); //This is where it prints the incorrect value to the log, regardless of the function I use.

$("#Course<%= @course.id %>").append('<div id="Lesson<%= @course.id %>" class="render_lesson"></div>');
$("#Lesson<%= @course.id %>").html("<%= escape_javascript(render( :partial => "lesson" )).html_safe  %>");
4

3 に答える 3

3

これは私がクエリ文字列に使用する JS 関数です。

function getParameterByName(name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
于 2012-04-03T21:34:23.217 に答える
0

これを試してください(4行目だけを変更しました-「var hashes ...」):

function getUrlVars()
{
    var vars = [], hash;    
    var hashes = window.location.href.valueOf().split('?').slice(1)[0].split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
于 2012-04-03T21:39:18.413 に答える
-2

私はプロジェクトの私の1でそれを使用しています..

function $_GET( name ){
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

PHPのように見えます$_GET['']...私はPHPが大好きなので:D

使用例:

URL:index.php?page=newone&id=4&cat=15

Javascript:alert($_GET('page')); // newone

于 2012-04-03T21:56:55.107 に答える