2016-03-25 3 views
3

$httpParamSerializerJQLikeの相違点は誰でも説明できますか?encodeURIComponent

$httpParamSerializerJQLikeでパラメータをシリアル化した後にJSON.Stringify()を実行する必要がありますか?私の理解では、$httpParamSerializerJQLikeはAngularのバージョンencodeURIComponentであり、JSON.Stringifyを内部的に実行していることが分かります。

答えて

4

$httpParamSerializerJQLikeは、角度のバージョンがencodeURIComponentではありません。 $httpParamSerializerJQLikeのドキュメントから

代替jQueryののparam()メソッドのロジックを以下の$ HTTPのparamsシリアライザ。

$httpParamSerializerJQLikeは、URLクエリ文字列またはAjaxリクエストでの使用に適した配列またはプレーンオブジェクトのシリアライズされた表現を作成するために使用されます。これは、URIのクエリパラメータを定義するために使用されます。その使用は、配列と単純なオブジェクトに限られています。例えば

$httpParamSerializerJQLike({a: 'two'}); // "a=two" 
$httpParamSerializerJQLike('abc'); // "0=a&1=b&2=c" 

あなたは、文字列'abc'は文字の配列のように扱われていることがわかります。

encodeURIComponent

文字のUTF-8エンコーディングを表す1つ、2つ、3つ、または4つのエスケープシーケンスによって特定の文字の各インスタンスを置き換えることによって統一リソース識別子(URI)成分をコードします。例えば

encodeURIComponent({a: 'two'}); // "%5Bobject%20Object%5D" 
encodeURIComponent('abc'); // "abc" 
encodeURIComponent('abc abc abc'); // "abc%20abc%20abc" 

あなたはencodeURIComponentは、適切なエスケープシーケンスで特殊文字を置き換え、文字列のような文字列を処理しないことがわかります。

+1

こんにちはgnerkus、ご返信ありがとうございます。 $ httpParamSerializerJQLikeのロジックを経て、ecodeURIComponentを適用するだけでなく、シリアライズすることが分かりました。この単一の関数は2つのジョブを実行しています。あれはとてもかっこいい。 –

関連する問題