2016-06-12 16 views
0

私はちょうどwebsiteにいて、URLに奇妙なクエリ文字列構造を持っていることに気がつきました。彼らはキーバリューペアであるようです。そして、あなたがウェブサイトフォームを変更するとURLの値が更新されます。ここでこのURL文字列の概念とは何ですか?

はURLです:

http://www.holidaysplease.co.uk/holiday-finder/#{"d":"2016-06-1","a":[],"t":20,"r":200,"f":13,"tr":180,"s":[5,4,3],"ac":[],"c":[],"sh":[],"dh":[],"du":null,"b":"500-4407"} 

誰もがこの概念はと呼ばれるものを知っていますか?私はJavaベースのWebアプリケーションで一度それを見て回ったが、これはどのように達成され、どの言語で私は安心できるか?

+0

ハッシュ部分にあるので、JavaScriptコードを扱います... – n00dl3

答えて

0

これはフラグメント識別子のようです。

Wikipedia says: ハッシュマーク#によって導入されたフラグメント識別子は、ドキュメントのURLの最後のオプション部分です。これは通常、その文書の一部を識別するために使用されます。一般的な構文は、RFC 3986で規定されています。URIのハッシュマーク区切り記号は、フラグメント識別子に属しません。

RFC 3986は、hereと定義されています。

以前、私はそれを見たことがありませんでした。上部の情報は、少しの研究によって私に返されたものです。私はこれが完全に間違っていないことを望む。

0

URL内の#の後に続くテキストはフラグメント識別子であり、通常はドキュメント内のセクションを参照するために使用されますが、要求に送信されないデータJavaScriptを使用してクライアントが読むことができます。

例では、フラグメント識別子には、JSONでエンコードされたデータ構造が含まれています。これは、キーと値のペアと配列をサポートするシリアル化形式です。

はここで、より読みやすい形式であなたの例からJSONです:

{ 
    "d": "2016-06-1", 
    "a": [], 
    "t": 20, 
    "r": 200, 
    "f": 13, 
    "tr": 180, 
    "s": [ 
     5, 
     4, 
     3 
    ], 
    "ac": [], 
    "c": [], 
    "sh": [], 
    "dh": [], 
    "du": null, 
    "b": "500-4407" 
} 
0

この背後にある考え方は、入力されたユーザーがURLにJSON structureとしてサーバーに送信されたデータです。サーバーはその文字列をJSONとして読み取り、要求を処理します。

このプロセスはWebFormで非常に有効で、encodeURIComponentというメソッドを使用して実行できます。

日付が変更されたときに、URLのJSONが更新されることに気づいたと思います。そこで、サーバーに埋め込まれたデータをJSON形式で送信します。あなたのURLで

、この情報はあなたが助け:)

+0

このJSONデータはどのくらい正確にサーバーに送信されますか? – user3574492

+0

ユーザーがフォームを塗りつぶすときにURLを追跡し、ユーザーがすべてのフィールドを入力すると、サーバーはJSONをチェックし、JSONデータで操作を進めます。サイト内に気づいた場合、すべてのフィールドに入力すると、そのデータ(ホテル)がフォームに下に表示されます。だから、それはどのように動作する:) – Thinker

+0

フラグメンテーション識別子は、サーバーに送信されません。それらはクライアントによって処理されます。 –

0

#fragment identifier呼び出された後に一部

d - days and year 
du - duration 
a - holiday type 
t - temperature 
r - rainfall 
f- fight time 
tr - travel 
s - star for the hotels 
b - budgets 

希望。クライアントサイドのJavaScriptコードでは、location.hashを使用してフラグメントのコンテンツにアクセスできます。この場合、フラグメントにはjsonデータが含まれます。ブラウザは通常、フラグメントをWebサーバーに送信することさえないので、クライアント側でのみ使用されます。

フラグメント識別子の最も一般的な用途は、そのWebページの特定の要素に、その属性のidを使用してリンクすることです。これは、Wikipediaの記事のサブセクションのために使用されます。

https://en.wikipedia.org/wiki/Fragment_identifier#Basics 

フラグメントはJSONが含まれている場合は、ブラウザのJavaScriptコンソールを開き、このコードを呼び出すことで、データを調べることができます。

JSON.parse(location.hash.substr(1)) 

あなたはそれをブックマークして、URLを共有することができるようにスキームのこの種は、URL内の状態を保存するために、単一ページのアプリケーションで使用することができます。

関連する問題