Jquery AJAX 注意要点

一个循环加载的例子

 

 <script type="text/javascript">
            $(document).ready(function () {
                var widgets = [];
               
                //添加一个取消订单的清单
                widgets.push('@Url.Action("WidgetCancledOrder", new { area = "", controller = "WidgetOrder" })');
                @foreach (var w in widgeList)
            {
                @:widgets.push('@Url.Action(w.Action, new { area=w.Area,controller = w.Controller })');
            }

                var idx = 0;
                var tries = 0;
                function retrievePage() {
                    $.ajax({
                        url: widgets[idx],
                        dataType: 'html',
                        success: function (data) {
                            $("#divContainer").append(data);
                            if (++idx < widgets.length) {
                                retrievePage();
                            }
                            tries = 0;
                        },
                        failure: function () {
                            if (tries++ < 3) {
                                retrievePage();
                            }
                        }
                    });
                }

                if (widgets.length > 0) {
                    retrievePage();
                }

              
            });
        </script>

2 一个 使用ajax的例子显示隐藏加载

 <script>

        function showLoading(obj) {

            $('span.loading').remove();

            $(obj).append('<span class="loading"><img src="@(Url.Content("~/") + "images/loading.gif")"/></span>');

        }

        function hideLoading() {

            $('span.loading').remove();

        }





function getListForDetailPage(url, obj) {

    $("div.list-group a.list-group-item").removeClass("active");

    $(obj).addClass("active");

    showLoading(obj);

    $.ajax({

        url: url,

        dataType: 'html',

        success: function (data) {

         

        },

        complete: function () {

            hideLoading();

        }

    });

}

    </script>
  • 3 .post时指定参数为list或是array时

 

当用$.ajax()向后台提交参数时,如果参数中数组的话一般在后台会用List,或Integer[] 等数组对象进行接收.

 

比如:

$.ajax({
   type: "POST",
   url: url,
   data:{ gender:[0,1] },
   dataType: "json",
   async:false
  });

 

这里有个查询性别的gender数组.

用火狐的firebug查看post数据的时候,如果jquery版本过高会发现gender按以下类型提交

schGender[] 1

schGender[] 0

 

也就是说它把数组里面的每个元素都当成了数组了. 这样传到后台就会报错了.

 

解决办法是换低版本的jquery,我这里换成1.3.2就没问题了(不推荐). 之后再查看POST数据就是:

schGender 1

schGender 0

 

最好的解决办法是添加一个属性

traditional:true

 

$.ajax({
   type: "POST",
   url: url,

   traditional:true,
   data:{ gender:[0,1] },
   dataType: "json",
   async:false
  });

引用自http://blog.csdn.net/thc1987/article/details/7278269

 

posted on 2017-10-24 10:37  LovlyPuppy  阅读(160)  评论(0)    收藏  举报

导航