2017-07-14 1 views
0

正常に動作するfirebaseサイトを配備しました。私が持っている問題は次です: 私のmain.jsの中に私はcompanyと呼ばれる変数があります。その変数をURLに応じて設定する方法はありますか?たとえば、URLを使用して変数を設定する

site-ce207.firebaseapp.com/company=01 

または別の方法を知っていますか?

+2

はい、使用した例は機能しません。 「http:// www.example.com /#company = 01」または「http://www.example.com/?company=01」を使用します。値はregexや 'location'オブジェクトのメソッドを使って取得できます。これらのオプションは、使用する方法ではありません。だから副作用が発生する可能性があります。 – Mouser

+1

これをパラメータとして渡す代わりに、 'site-ce207.firebaseapp.com/company/01'のパスに識別子を渡すことも検討してください。このURLで何を達成しようとしているかによって、後者はより慣れ親しんでいるかもしれません。 –

答えて

3

Mouserでは指摘したように、これは無効です。

しかし
site-ce207.firebaseapp.com/company=01 

、このイマイチ:

site-ce207.firebaseapp.com#company=01&id=5 

そして、それは簡単に解析することができます。

var queries=location.hash.slice(1).split("&").map(el=>el.split("=")); 

クエリnow.looksをこのように:

だから、オブジェクトを使用行うことができます解決する

:だから

var getQuery={}; 
queries.forEach(query=>getQuery[query[0]]=query[1]); 

を今特定のキーを取得するのは簡単:地図を使用して

console.log(getQuery["company"]); 

たり、新しい、より簡単に:

var query=new Map(queries); 
console.log(query.get("company")); 
+0

Worked Great!ちょうど1つのこと:会社は最初のアイテムなので、「会社」ではなく「会社」です。それで、query.get( "#company")によって解決されます。 – Ace

+0

@Ace right、それをスライスして編集しました... –

+0

arrowed関数を使わずに質問を編集してください。 – Mouser

0

私はこれを処理するために長い時間前に見つけた簡単な機能を持っています。私はこれを行うことによって価値を得るために少し修正しました。

function param(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

して、値を使用するようなものを発行するとき、私は、次の

var myCity = param('cityid'); 

ん:http://example.com/?cityid=Guatemala

をmyCityは私のアプリで「グアテマラ」の値を持つことになります。

関連する問題