从JSON响应中分配数据

时间:2013-09-14 16:04:43

标签: jquery asp.net ajax json

我在script标记内分配了一个JavaScript对象。

<script>
  searchdata = {"employees":[{"name":"john doe","sal": "10000"}]};
</script>

我在不同的地方使用searchdata,如下:

function viewemp(){
  var emp =  searchdata.employees;
}

function viewemp1(){
  var emp1 =  searchdata.employees;
}

function viewemp2(){
  var emp2 =  searchdata.employees;
}

这一切都没有任何问题。

我正在看的是,我想从jquery ajax调用数据中设置(赋值)searchdata,即我想从jquery ajax响应中分配数据。

<script>
 $(document).ready(function () {
            var searchdata = new Object();
            $.ajax({
                type: "POST",
                url: "Services/GlobalData.asmx/FindEmpList",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                success: function (data) {
                    searchdata  = eval(data.d);
                }
           });
        });
 </script>

但是当我看到html“页面查看源”页面时,searchdata显示为空。它没有分配任何jquery ajax数据。我想查看html“页面视图源”页面中返回的数据jquery。 任何人都可以帮助我如何在“页面视图源”

中查看我的jquery returend数据

我也可以在控制台日志中看到我的json数据。

2 个答案:

答案 0 :(得分:0)

您无法通过View&gt;查看数据来源,它不是来源的一部分。它是分别添加到JavaScript环境的数据。

答案 1 :(得分:0)

当你声明一个变量时,这个变量是function () { context

中的本地变量
$(document).ready(function () {
   var searchdata = new Object(); // <-- LOCAL
   ...
});

试试这个:

公共变量:

 window.searchdata = (function() {

     var sdata = {};
     return {
        set: function(data){
           sdata = data;
        },
        get: function() {
           return sdata;
        },
        employees: function() {
           return sdata.employees;
        } 
     };

 }());

AJAX:

 $(document).ready(function () {

        $.ajax({
            type: "POST",
            url: "Services/GlobalData.asmx/FindEmpList",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (data) {
                searchdata.set(eval(data.d));
            }
       });
});

获取searchdata值的函数:

function viewemp(){
  var emp =  searchdata.get().employees;
}

function viewemp1(){
  var emp1 =  searchdata.employees();
}

function viewemp2(){
  var emp2 =  searchdata.get().employees;
}

searchdata.get().employeessearchdata.employees()返回相同的值,但您有更多选项可以返回值。

也许它比你需要的更多,但可以帮助你理解如何使用这种类型的变量和上下文