如何从返回ajax的函数中检索结果

时间:2014-02-25 04:35:57

标签: jquery asp.net json

我有一个函数,它期望ajax调用的结果并将其分配给变量,结果成功分配给变量,但我的问题是我如何提取它?

这是我的代码,我尝试使用$.each来变量,但它未定义

<script type="text/javascript">
    $(function () {
        var branches = GetBranches();

        console.log(branches);

        //$.each(branches.d, function (key, val) {
        //    console.log(val.BranchCode);
        //})

        function GetBranches() {
            return $.ajax({
                type: 'POST',
                url: 'testWS.asmx/GetBranches',
                contentType: 'application/json; charset=utf-8',
                dataType: 'JSON'
            });
        }
    });
</script>

以下是console.log(branches)

的屏幕截图

enter image description here

我想从responseJSON中检索/提取数据。怎么可能这样做?

3 个答案:

答案 0 :(得分:1)

jqXHR对象

$.ajax()返回jQuery XMLHttpRequest(jqXHR)对象。

  

jQuery 1.5中$ .ajax()返回的jqXHR对象实现了   Promise接口,为它们提供所有属性,方法和   Promise的行为(有关更多信息,请参阅Deferred对象)。   这些方法采用一个或多个函数参数   $ .ajax()请求终止。这允许您分配多个   单个请求上的回调,甚至在回调之后分配回调   请求可能已经完成。 (如果请求已经完成,那么   立即触发回调。)jqXHR的可用Promise方法   对象包括:

     
      
  1. jqXHR.done(function(data,textStatus,jqXHR){});
  2.   
  3. jqXHR.fail(function(jqXHR,textStatus,errorThrown){});
  4.   
  5. jqXHR.always(function(data | jqXHR,textStatus,jqXHR | errorThrown){});
  6.   
  7. jqXHR.then(function(data,textStatus,jqXHR){},function(jqXHR,textStatus,errorThrown){});
  8.   

所以,

$(function () {
    var branches = GetBranches(); // return you jqXHR Object.
    brances.done(function (data, textStatus, jqXHR) { // assign callback function when your AJAX request completes.
        console.log(data); // here is data you are looking for
    });

    function GetBranches() {
        return $.ajax({
            type: 'POST',
            url: 'testWS.asmx/GetBranches',
            contentType: 'application/json; charset=utf-8',
            dataType: 'JSON'
        });
    }
});

参考$.ajaxDeferred Object

答案 1 :(得分:1)

试试这个 -

   function GetBranches() {
        $.ajax({
            type: 'POST',
            url: 'testWS.asmx/GetBranches',
            contentType: 'application/json; charset=utf-8',
            dataType: 'JSON',
           success: function(response) {
                  return response;
               }
        });
   }

答案 2 :(得分:0)

您可以使用AJAX成功

<script type="text/javascript">
    $(function () {
        var branches = GetBranches();

        console.log(branches);



        function GetBranches() {
            return $.ajax({
                type: 'POST',
                url: 'testWS.asmx/GetBranches',
                contentType: 'application/json; charset=utf-8',
                dataType: 'JSON',
success:function(data){
// Here you will get the data returned from response
}
            });
        }
    });
</script>