标签: jquery

  • $.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){
    $.each(data.items, function(i,item){
    $(“<img/>”).attr(“src”, item.media.m).appendTo(“#images”);
    if ( i == 3 ) return false;
    });
    });

    说明一下注意事项:

    1、请求地址一定要有 jsoncallback=? ,例如我请求 百度,传一个参数userName=123,应该这样写:http://www.baidu.com?userName=123&jsoncallback=? ,如果我不传参数userName,应该这样写:http://www.baidu.com?jsoncallback=?

    2、第二个参数一定要是json格式键/值对的格式。例:{ “email”: “”}

    3、回调函数,您请求的地址需要返回数据,返回的数据必须是严格的json格式的数据,还需要用 参数jsoncallback加小括号包裹jsoncallback(json格式的数据),否则就会出现回调函数不会执行的问题。

    下面有有两个页面参考:

    a.jsp:

    <html>
    <head>
    <title>TEST</title>
    <script type=”text/javascript” src=”./jquery-1.6.2.min.js”></script>

    <script type=”text/javascript”>
    jQuery(function(){
    $.getJSON(“http://www.ma.com/ids/cn/b.jsp?email=123@163.com&callback=?”, function(data){
    alert(data.resultMsg);
    });

    });
    </script>
    </head>
    <body>
    </body>
    </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+”)”%>

     

  • 让scroll事件在滚动条停止时响应

    用过scroll事件的人都知道,在每次拖动滚动条的时候会相应的事件会相应多次,而在大多数情况下我们都只希望它在滚动条停止滚动的时候 响应。经过多次测试,终于发现了一个比较好的解决方案,那就是通过setTimeout,给scroll加个延迟。例如用jQuery为页面加入 scroll事件,可以这样写:

    var timeout = false; 
        $(window).scroll(function(){ 
            if (timeout){clearTimeout(timeout);} 
            timeout = setTimeout(function(){ 
                //do something
        },100);
    });