-1

プルする必要のあるデータを含む長い URL があります。これを行うことで、URL の末尾を取得できます。

var data = window.location.hash;

私がそうするalert(data);と、次のような長い文字列を受け取ります。

#access_token=0u2389ruq892hqjru3h289r3u892ru3892r32235423&token_type=Bearer&expires_in=3600

この例では、アクセス トークンが有効ではないことに注意してください。例として入力した乱数です。

長い文字列を変数に格納したので、アクセス トークンの値だけを解析するにはどうすればよいでしょうか。最初の「=」と「&. だから、これは私が文字列から必要なものです:

0u2389ruq892hqjru3h289r3u892ru3892r32235423

私はphp爆発を読んでいましたが、ストリップのような他のJavaスクリプト固有のものを読んでいましたが、必要に応じて機能させることができませんでした。みんなありがとう。

4

7 に答える 7

2

私はこれで少し遅れているようです。これは、URL パラメータをマップに解析し、任意のパラメータを名前で取得するバージョンでの私の試みです。

var str = "#access_token=0u2389ruq892hqjru3h289r3u892ru3892r32235423&token_type=Bearer&expires_in=3600";

function urlToMap(url){
    var startIndex = Math.max(url.lastIndexOf("#"), url.lastIndexOf("?"));
    url = url.substr(startIndex+1);
    var result = {};
    url.split("&").forEach(function(pair){
        var x = pair.split("=");
        result[x[0]]=x[1];
    });
    return result;
}

function getParam(url, name){
    return urlToMap(url)[name];
}

console.log(getParam(str, "access_token")); 
于 2013-09-12T20:23:15.653 に答える
1

あなたの質問に直接答えるには (これとそれの間に何がありますか)、indexOf 関数と部分文字列関数を使用する必要があります。

ここにあなたのための小さなコードがあります。

    function whatsBetween (_strToSearch, _leftText, _rightText) {
        var leftPos = _strToSearch.indexOf(_leftText) + _leftText.length;
        var rightPos = _strToSearch.indexOf(_rightText, leftPos);
        if (leftPos >= 0 && leftPos < rightPos)
            return _strToSearch.substring(leftPos, rightPos);
        return "";
    }

使用法:

alert(whatsBetween, data,"=","#");

そうは言っても、クラッシュのような機能を使用したいのですが...

于 2013-09-12T20:21:35.887 に答える