首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery .ajax()请求不触发

jQuery .ajax()请求不触发
EN

Stack Overflow用户
提问于 2013-08-03 20:47:12
回答 1查看 10.3K关注 0票数 5

我正在尝试对我的web服务器进行AJAX调用,以获取有关城市的信息。

  • 我在页面上有一个选择下拉列表,填充了3个值:空白、“纽约,纽约”和“安娜堡,MI”。
  • 当一个项目被选中时,城市的名称被重新格式化:空格被转换成'-‘
  • 然后.ajax()被激发到"/data/city“
  • 当服务器响应时,它使用检索到的JSON对象调用alert()

代码:

代码语言:javascript
运行
复制
$( 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()电话有时拒绝开火。当url等于时,从不会发出传出HTTP请求:

  • /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的“Network”选项卡进行检查)
  • web服务器接收所有URL的HTTP请求,但这个有问题的URL除外
  • 页面上没有Javascript错误

我漏掉了什么明显的东西吗?这似乎真的很奇怪,.ajax()不会为这个特定的网址.

编辑:

.ajax()请求添加了一个错误回调。它失败了,出现了状态=“拒绝”和statusText =“错误”的错误。

根据请求,页面上的<select>标记:

代码语言:javascript
运行
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-03 21:41:40

默认情况下,除非您在默认设置中使用$.ajaxSetup,否则您将使用GET方法。由于您没有为缓存指定显式值,而且根据jquery (api.jquery.com/jQuery.ajax),它的默认值是真的,因此您的浏览器可能仍然在使用较早的(缓存)响应(即使您在浏览器中看到的源代码是最新的)。我建议在$.ajax({.})调用中使用POST (如果您和服务器允许的话)和/或指定缓存: false外接,以排除任何有趣的东西。

(按提问者的要求复制/粘贴我的评论)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18037165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档