我正在尝试向我的网络服务器发出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
等于:
/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()
不会触发这个特定的URL ......
修改
为.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>
答案 0 :(得分:4)
默认情况下,除非您使用$ .ajaxSetup进行默认设置,否则您将使用GET方法。由于您没有为缓存指定显式值,并且根据jquery规范(api.jquery.com/jQuery.ajax),其默认值为true,因此您的浏览器可能仍在使用早期(缓存)响应(即使您在浏览器中看到的源代码是最新的。我建议使用POST(如果你是和服务器允许的话)和/或在$ .ajax({...})调用中指定cache:false explicity,只是为了排除任何有趣的东西。
(根据问题提问者的要求复制/粘贴我的评论)