Jquery 1.5之后新增了对象
    image.png
    1.5以前,$.ajax() 返回的是xhr原生JS对象。
    1.5之后,$.ajax() 返回的是一个xhr的超集,也是Deferre对象,就可以使用其API,如then/done/fail等等。
    image.png
    image.png

    image.png

    一个老项目中用到的例子:

    1. getCountry: function() {
    2. var self = this
    3. var req = {
    4. url: "http:/xxxxxx/abc",
    5. param: {
    6. client: "pc",
    7. language:$.cookie('language')||'en'
    8. }
    9. }
    10. $.when(this.getData(req)).then(function(data) {
    11. self.handleData(data.data)
    12. })
    13. },
    14. getData: function(req) {
    15. var dtd = $.Deferred() , self = this;
    16. $.ajax({
    17. url: req.url,
    18. type: "get",
    19. data: req.param,
    20. dataType: 'json',
    21. cache: false,
    22. xhrFields: {
    23. withCredentials: true
    24. },
    25. success: function (ret) {
    26. if(ret && ret.state == "0x0000"){
    27. dtd.resolve(ret.data);
    28. }
    29. },
    30. error: function(ex){
    31. console && console.log("error in" , url , param);
    32. dtd.resolve([]);
    33. }
    34. });
    35. return dtd.promise();
    36. }