Web サーバーに AJAX 呼び出しを行って、都市に関する情報を取得しようとしています。
- ページに選択ドロップダウンがあり、[空白]、「ニューヨーク、ニューヨーク」、「ミシガン州アナーバー」の3 つの値が入力されています。
- アイテムが選択されると、都市の名前が再フォーマットされます: スペースは「-」に変わります
- 次に
.ajax()
、「/data/[都市]」に発射されます - サーバーが応答すると
alert()
、取得した JSON オブジェクトを呼び出します。
コード:
$( document ).ready(function() {
$('#city').change(function () {
var city = $.trim($(this).val()).replace(/ /g,"-");
if(city.length > 0)
{
var url = "/data/cities/" + city;
$.ajax({
url: url,
context: document.body,
dataType: 'json'
}).done(function(data) {
alert(data);
});
}
});
});
何らかの理由で、.ajax()
呼び出しが拒否されることがあります。次の場合、発信 HTTP リクエストは行われませんurl
。
/data/cities/New-York,-NY
ただし、次の場合は正常に起動しますurl
。
/data/cities/New-York-NY
(コンマなし)/data/cities/New-York,NY
(ダッシュなし)/data/cities/New-York,-NYC
(追加キャラ)/data/cities/Ann-Arbor,-MI
(同様のフォーマット)
私は確認しました:
- 「失敗」した場合、ブラウザーは送信 HTTP 要求を作成しません (Chromium の [ネットワーク] タブで確認)。
- Web サーバーは、この問題のある URL を除くすべての URL の HTTP 要求を受信します。
- ページに Javascript エラーはありません
明らかな何かが欠けていますか?これは、この 1 つの特定の URL に対して起動しないのは本当に奇妙に思えます....ajax()
編集:
.ajax()
リクエストにエラー コールバックを追加しました。state = "rejected" および statusText = "error" のエラーで失敗しています。
リクエストに応じ<select>
て、ページのタグ:
<select id="city">
<option value=""></option>
<option value="New York, NY">New York, NY</option>
<option value="Ann Arbor, MI">Ann Arbor, MI</option>
</select>