如果您想了解在jQuery中使用getJSON函数时,回调函数不起作用的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析$.getJSON回调函数不执行、AJAX–JQueryGET回调不起作用
如果您想了解在jQuery中使用getJSON函数时,回调函数不起作用的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析$.getJSON回调函数不执行、AJAX – JQuery GET回调不起作用,但JSON文件访问正常、javascipt jQuery中的简单递归函数不起作用、javascript – 为什么这个jquery.get函数不起作用?的各个方面,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- 在jQuery中使用getJSON函数时,回调函数不起作用
- $.getJSON回调函数不执行
- AJAX – JQuery GET回调不起作用,但JSON文件访问正常
- javascipt jQuery中的简单递归函数不起作用
- javascript – 为什么这个jquery.get函数不起作用?
在jQuery中使用getJSON函数时,回调函数不起作用
我试图在jQuery中使用getJSON函数导入一些数据并触发回调函数。回调函数未运行。但是,如果我使用get函数尝试相同的操作,则效果很好。奇怪的是,即使我将“
json”作为类型传递,它也可以与get函数一起使用。为什么会这样呢?我在Firefox 3和IE 7中测试了以下文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv=''Content-Type'' content=''text/html; charset=UTF-8''><title>ajax test</title><script type="text/javascript" src="/jquery-1.3.2.min.js"></script></head><body><input type="button" id="test1" value="get"><input type="button" id="test2" value="getJSON"><input type="button" id="test3" value="get with json type"><script type="text/javascript">$("#test1").click(function() { $.get("index.html", function(response) { alert(''hi''); //works } )});$("#test2").click(function() { $.getJSON("index.html", function(response) { alert(''hi''); //doesn''t work } )});$("#test3").click(function() { $.get("index.html", function(response) { alert(''hi''); //works }, "json" )});</script></body></html>
只要我访问的URL在同一个域中,这似乎都会发生。我尝试传递一些数据,但这没有什么不同。
当然,可以像在第3个测试函数中那样使用get函数来解决该问题,但是我仍然对为什么会发生这种情况感到好奇。
我知道这里有一个类似的问题,但没有回答我的问题。
答案1
小编典典json必须有效,否则回调将不会触发。
$.getJSON回调函数不执行
最近做的项目遇到一个跨域请求做验证的问题,为了解决这个跨域问题,愁了老半天,最后发现jQuery提供的一个特别简单的方法,就是用jQuery.getJSON(url,[data],[callback]) jQuery的Api提供一个列子: $.getJSON("http://api.flickr.com/services/Feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",function(data){ 说明一下注意事项: 1、请求地址一定要有 jsoncallback=? ,例如我请求 百度,传一个参数userName=123,应该这样写:http://www.baidu.com?userName=123&jsoncallback=? ,如果我不传参数userName,应该这样写:http://www.baidu.com?jsoncallback=? 2、第二个参数一定要是json格式键/值对的格式。例:{"email": "123@163.com"} 3、回调函数,您请求的地址需要返回数据,返回的数据必须是严格的json格式的数据,还需要用 参数jsoncallback加小括号包裹jsoncallback(json格式的数据),否则就会出现回调函数不会执行的问题。 下面有有两个页面参考: a.jsp: <html> }); b.jsp <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="/error.jsp" %> <% response.setContentType("application/json");//这个一定要加 String callback = request.getParameter("callback"); int status = 0; String remsg = "{\"resultMsg\":\""+status+"\"}"; %> <%=callback+"("+remsg+")"%> |
AJAX – JQuery GET回调不起作用,但JSON文件访问正常
$.get('http://files.mysite.com/data.json',function(data) { console.log(data); },"jsonp");
当我从Firebug查看网络菜单时,我可以看到对我的JSON文件的有效调用,当我打开它时,它会获得所有信息.
但控制台保持沉默.没有AJAX调用的迹象,也没有我的数据记录.
我的AJAX调用与我的JSON文件不在同一个域中.这就是为什么我使用jsonp
有任何想法吗??
另外我建议你不要使用getJson等.
$.ajax({ url: http://files.mysite.com/data.json,dataType: 'jsonp',cache: false,beforeSend: function () { console.log("Loading"); },error: function (jqXHR,textStatus,errorThrown) { console.log(jqXHR); console.log(textStatus); console.log(errorThrown); },success: function (data) { console.log('Success'); console.log(data); },complete: function () { console.log('Finished all tasks'); } });
这样你就可以获得一些错误处理和其他漂亮的小功能,你可以通过beforeSend添加一个加载微调器,并通过完整删除它:)
编辑:
用下面的错误函数替换错误函数,这应该让我们更好地了解问题是什么:)
error: function (jqXHR,errorThrown) { console.log(jqXHR); console.log(textStatus); console.log(errorThrown); }
javascipt jQuery中的简单递归函数不起作用
它不会运行,因为您从不调用该函数,只有在DOM准备就绪后才创建该函数。
const i = 3;
function blink(i) {
if(i==0)
return;
$(".target h1").fadeToggle(1000);
blink(i-1);
}
$(document).ready(function() {
blink(i)
});
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
<div><h1>I am blinking.</h1></div>
</body>
</html>