我正在尝试对我的web服务器进行AJAX调用,以获取有关城市的信息。
.ajax()
被激发到"/data/city“alert()
。代码:
$( 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
(类似格式)我已核实:
我漏掉了什么明显的东西吗?这似乎真的很奇怪,.ajax()
不会为这个特定的网址.
编辑:
向.ajax()
请求添加了一个错误回调。它失败了,出现了状态=“拒绝”和statusText =“错误”的错误。
根据请求,页面上的<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>
发布于 2013-08-03 21:41:40
默认情况下,除非您在默认设置中使用$.ajaxSetup,否则您将使用GET方法。由于您没有为缓存指定显式值,而且根据jquery (api.jquery.com/jQuery.ajax),它的默认值是真的,因此您的浏览器可能仍然在使用较早的(缓存)响应(即使您在浏览器中看到的源代码是最新的)。我建议在$.ajax({.})调用中使用POST (如果您和服务器允许的话)和/或指定缓存: false外接,以排除任何有趣的东西。
(按提问者的要求复制/粘贴我的评论)
https://stackoverflow.com/questions/18037165
复制相似问题