5

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>
4

1 に答える 1