jQuery中ajax的4种常用请求方式

1.$.ajax()返回其创建的 XMLHttpRequest 对象。

$.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。
如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。
实例:
保存数据到服务器,成功时显示信息。

$.ajax({
    type: "post",
    dataType: "html",
    url: '/Resources/GetList.ashx',
    data: dataurl,
    success: function (data) {
        if (data != "") {
          $("#pager").pager({ pagenumber: pagenumber, pagecount:data.split("$$")[1], buttonClickCallback: PageClick });
          $("#anhtml").html(data.split("$$")[0]);
        }
    }
});            

2.通过远程 HTTP GET 请求载入信息。

这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
实例:

$.get("test.cgi", { name: "John", time: "2pm" },
    function(data){
    alert("Data Loaded: " + data);
});

3. 通过远程 HTTP POST 请求载入信息。

这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
实例:

$.post("/Resources/addfriend.ashx", { "fid": fids, "fname":     fnames, "tuid": tuids, "tuname": tunames }, function (data) {
    if (data == "ok") {
        alert("添加成功!");
    }
})    

4.通过 HTTP GET 请求载入 JSON 数据。

实例:

$.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;
  });
});

 

项目实际开发过程中,使用modal,在加载数据时,也会使用URL转向后台Java函数,以此作为比较。

dialogEdit.modal({
  remote:base+"platform/sys/getEditDatail?id="+id+"&type="+type
  }
)

 

详解bootstrap的modal-remote两种加载方式

【转载】请前往原地址

方法一:

使用链接
<a href="demo.jsp" data-toggle="modal" data-target="#mymodal">打开</a>
当点击该连接时,demo.jsp的内容就可以动态的加载到<div class="modal-content"></div>中。当然这里的连接也可以是controller

方法二:

使用脚本

$("#myModal").modal({    

   remote: "page.jsp"    

});    

 

但是这样加载后,会有问题,modal数据只加载一次,如果要加载不同的数据,例如根据id查询详细信息,modal的数据是不能更新的,即使传的id值不同。其实解决办法很简单,只需要在加载下次数据前,将之前的加载的数据清除即可。
最简单的方式就是监听modal的hidden,当modal关闭时,即把数据清除即可:

 
//v2  
$("#myModal").on("hidden", function() {    
    $(this).removeData("modal");    
});    
//v3  
$("#myModal").on("hidden.bs.modal", function() {    
    $(this).removeData("bs.modal");  
});   

问题来了:如果在请求的页面中有$()加载事件加载比如boostrap-validator或者boostrap-fileinput等插件会出现奇怪的现象,第一次正常执行,关掉modal,第二次,$()的代码没有执行,第三次能执行;经过反复发现“hidden.bs.modal”监听每次都执行了,但是加载到<div class="modal-content"></div>里面的数据没有被清除,可能是这个原因导致的这种现象,于是改成如下代码:

$("#myModal").on("hidden.bs.modal", function() {    
    $(this).removeData("bs.modal");  
    /*modal页面加载$()错误,由于移除缓存时加载到<span style="color: rgb(51, 51, 255);"><div class="modal-content"></div></span>未移除的数据,手动移除加载的内容*/  
    $(this).find(".modal-content").children().remove();   
});   

 

 

 

posted @ 2017-11-01 19:39  Dreamice  阅读(606)  评论(0编辑  收藏  举报