私はjQueryのアヤックス()関数を経由してAPIを呼び出すには、以下のURLを作成する必要があります。私はちょうど自分自身で文字列を一緒に置くことによって、これを形成する方法を知っているが、それはのように思えるjQueryの.ajax()メソッドを使用して、GETリクエストにスラッシュを含むパラメータを送信するにはどうすればよいですか?
https://www.airnowapi.org/aq/forecast/zipCode/?format=application/json&zipCode=02144&date=2016-11-26&distance=25&API_KEY=API_KEY
不要な回避策を使用して.ajax()
を使用することはできません。私はこの機能が私のためにやるべきことをたくさん手作業で行う必要があります。
この問題はformat=application/json
です。これを設定オブジェクトのパラメータとして渡すと.ajax()
に渡されるため、スラッシュは%2F
にエスケープされ、APIは要求を受け入れないためです。私はformatパラメータを省略してみましたが、500サーバエラーが発生します。私のウェブブラウザに入力すれば要求は完全に動作しますが、このパラメータがないか、スラッシュ(エスケープできません)が含まれていない場合は要求されません。 .ajax()
がスラッシュをこのようにエンコードするのを防ぐか、APIサーバーに到達する前に何らかの形でデコードする必要があります。
私は既にGoogleとStackOverflowを検索して回答していますが、運がありません。私はエスケープ文字のエンコードとデコード方法を理解していますが、私が書かなかったjQuery関数の中でそれを傍受することはできません。 jQueryのソースコードに基づいて、その関数を書き直そうとしない限り、単純な問題の大きな回避策のように見えます。参考のために、ここに私のコードの関連部分は次のとおりです。
function getData(query, callback) {
var settings = {
url: state.apis.airNow.BASE_URL,
dataType: 'json',
type: 'GET',
success: callback,
data: {
format: "application/json",
zipCode: query,
distance: 25,
API_KEY: state.apis.airNow.API_KEY
}
};
$.ajax(settings);
}
は、どのように私はAPIが期待する正確な形式でformat=application/json
を提出する.ajax()
を得るか、または私が代わりに使用されなければならない他の同様の機能はありますか?
ありがとうございました!
です。問題は、 '$ .ajax() 'data'オブジェクトをurlに追加するクエリ文字列に変換します。どちらがうまくいくのか... URLエンコーディングがそのAPIで飛んでいないという点を除いて設定オブジェクトの 'url'パラメータを変更して、クエリのフォーマット部分を含めることができますか? 'url:state.apis.airNow.BASE_URL + '?format = application/json'のようなもの? – SimianAngel
@SimianAngel、私はそれについて考えましたが、 '$ .ajax()'が残りの設定をエンコードしなければならない場合は、別の '?'最初のパラメータの後にしかし、私はそれを以下の@Brianの答えによって解決することができるはずです。私はそれを試してすぐにupvoteに応答し、それが動作することを確認します! – Rosensweig