jQueryの$ .param()の不具合が十分に深刻ではないという問題を回避する助けが必要であり、深いJSONの一部に%5D
などが残っています。JSONオブジェクトのクエリー文字列への深いJavascriptまたはjQueryの変換
ない:
https://api-cert.payeezy.com/v1/securitytokens?apikey=FAKEZdp9nJrKu46wX9evGNnRbGL38W6I&js_security_key=js-FAKE79a767d3fea1611ae66e1c6bfd2af8f879a767d3fea1&callback=respondPEZ&auth=true&ta_token=NOIW&type=FDToken¤cy=USD&credit_card.cardholder_name=John+Doe&credit_card.card_number=4111111111111111&credit_card.exp_date=1218&credit_card.cvv=100&credit_card.type=visa&billing_address.street=&billing_address.city=&billing_address.state_province=&billing_address.zip_postal_code=&billing_address.country=&billing_address.email=&billing_address.phone.type=&billing_address.phone.number=
あなたはそれを見ると、私はあなたがのようなものに気づくしたいですbilling_address%5Bstate%5D
ではなく、billing_address[state]
ではなくbilling_address.state
となります。 PayEezyのために特別な方法が必要です。あなたが実行したときに、今
var o = {
apikey: 'FAKEZdp9nJrKu46wX9evGNnRbGL38W6I',
js_security_key: 'js-FAKE79a767d3fea1611ae66e1c6bfd2af8f879a767d3fea1',
callback: 'respondPEZ',
auth: true,
ta_token: 'NOIW',
type: 'FDToken',
currency: 'USD',
credit_card: {
type: 'visa',
cardholder_name: 'John Doe',
card_number: '4111111111111111',
exp_date: '1218',
cvv: '100'
},
billing_address: {
street: undefined,
city: undefined,
state_province: undefined,
zip_postal_code: undefined,
country: undefined,
email: undefined,
phone: {
type: undefined,
number: undefined
}
}
};
そのjQueryの$ .PARAM()を通して、あなたは、クエリ文字列に十分に閉じていない結果が得られます。
だから、私はJavaScriptでそのように、このJSONオブジェクトを作成しました:
apikey=FAKEZdp9nJrKu46wX9evGNnRbGL38W6I&js_security_key=js-FAKE79a767d3fea1611ae66e1c6bfd2af8f879a767d3fea1&callback=respondPEZ&auth=true&ta_token=NOIW&type=FDToken¤cy=USD&credit_card%5Btype%5D=visa&credit_card%5Bcardholder_name%5D=John+Doe&credit_card%5Bcard_number%5D=4111111111111111&credit_card%5Bexp_date%5D=12%2F18&credit_card%5Bcvv%5D=100&billing_address%5Bstreet%5D=&billing_address%5Bcity%5D=&billing_address%5Bstate_province%5D=&billing_address%5Bzip_postal_code%5D=&billing_address%5Bcountry%5D=&billing_address%5Bemail%5D=&billing_address%5Bphone%5D%5Btype%5D=&billing_address%5Bphone%5D%5Bnumber%5D=
これら%5D
と%5B
を参照してください?それらは望ましくなく、PayEezyがAPIで望んでいるものではありません。
だから、私はこれを行うことで、問題を修正に近づくために管理:
var s = decodeURIComponent($.param(o,false));
しかし、その後、私はこれを行うことにより、さらにそれを修正することができた:
var s = decodeURIComponent($.param(o,false))
.replace(/\]\=/g,'=')
.replace(/\]\[/g,'.')
.replace(/\[/g,'.');
私の質問をあなたにオブジェクトに埋め込まれたJSONオブジェクトを角括弧を含まないよりURLフレンドリなクエリ文字列に変換するための、より洗練された方法があります。ドット表記法が含まれています。私が解決した技術を置き換える?例えば、jQueryやJavascriptにはすでにいくつかの関数がありますが、これを組み合わせると、私が気付いていないこれをうまく処理できますか?
独自のシリアライザを作ります。 https://github.com/jquery/jquery/blob/master/src/serialize.js –