为什么return false
阻止alert()
工作,我该如何解决这个问题?如果我将其删除,则会显示警报,然后它会加载<a>
标记所指向的页面。
<script type="text/javascript">
$("document").ready(function(){
$("a").click(function(){
if(!$(this).is('static')){
var href = $(this).attr('href');
$.getJSON(href, function(data) {
alert('hi');
});
}
return false;
});
});
</script>
答案 0 :(得分:4)
我的猜测是,正在向客户端发送格式错误的JSON,将阻止回调被触发。 manual说:
如果JSON中存在语法错误 文件,请求通常会失败 默默。避免频繁的手工编辑 由于这个原因,JSON数据。
您能告诉我们服务器正在生成的JSON的快照吗?
答案 1 :(得分:3)
回答更新!
我已经使用$ .ajax函数彻底测试了这个函数,这是$ .getJSON实际调用的函数。
$("document").ready(function(){
$("a").click(function(event){
if(!$(this).is('static')){
var href = $(this).attr('href');
$.ajax({
url: href,
dataType: 'text',
success: function(data) {
alert("hi");
}
});
}
return false;
});
});
使用格式正确的JSON对象,这可以按预期工作。以下是我的json.html测试文件的内容:
{ "firstName" : "John",
"lastName" : "Doe",
"age" : 23 }
但是,如果文件包含HTML或格式错误的JSON对象,则永远不会调用警报 - 实际上,通过向上面的示例添加错误处理程序,您会发现它出错:
$("document").ready(function(){
$("a").click(function(event){
if(!$(this).is('static')){
var href = $(this).attr('href');
$.ajax({
url: href,
dataType: 'text',
success: function(data) {
alert("hi");
},
error: function() {
alert("NO!!!!");
}
});
}
return false;
});
});
当您使用此请求替换代码中的超链接时,我猜您可能想要使用$ .get,而不是$ .getJSON。所以回到原来的例子:
<script type="text/javascript">
$("document").ready(function(){
$("a").click(function(){
if(!$(this).is('static')){
var href = $(this).attr('href');
$.get(href, function(data) {
alert('hi');
});
}
return false;
});
});
</script>
答案 2 :(得分:0)
这似乎适用于Firefox 3和Chrome,同时包含get和getJSON。
IE8是另一个故事(我认为IE7也是如此)。那里,只有工作; getJSON失败。服务器返回的JSON不是IE友好的吗?