【问题标题】:Assigning data from a JSON response从 JSON 响应分配数据
【发布时间】:2013-09-14 16:04:43
【问题描述】:

我在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 返回数据

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

【问题讨论】:

  • 不要使用eval(),它既危险又不可靠。为什么不使用.clone

标签: jquery asp.net ajax json


【解决方案1】:

您无法通过 View > Source 查看数据,它不是源的一部分。它是单独添加到 JavaScript 环境中的数据。

【讨论】:

  • 即使我能看到 google.com View-> 源代码我也能看到一些 json 数据
  • 那么这是页面源中的数据,而不是使用 Ajax 获取的数据。
【解决方案2】:

当你声明一个变量时,这个变量是局部的,在function () {上下文中

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

获取搜索数据值的函数:

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

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

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

searchdata.get().employeessearchdata.employees() 返回相同的值,但对于如何返回值,您有更多选择。

也许它超出了您的需要,但可以帮助您了解如何使用这种类型的变量和上下文

【讨论】:

    猜你喜欢
    • 2019-10-11
    • 1970-01-01
    • 2022-12-05
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多