将全局变量与ajax一起使用

时间:2015-08-11 11:34:31

标签: javascript c# jquery asp.net ajax

目前我正在使用asp.net和c#的网站上工作。我使用web service从数据库获取数据,我得到了正确的数据而没有问题。但是,一旦我通过ajax调用获取数据,我需要将它分配给一个全局变量,我后来用它创建一个树形图。这就是我的问题所在,我已尝试分配JSON对象,但我似乎无法让它发挥作用。我一直收到错误

  

TypeError:treeData未定义

请有人指导我。以下是相关代码

Ajax Call

$(function () {
   $.ajax({
   type: "POST",
   url: "MyService.asmx/SomeFunction",
   data: "{}",
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: successHandler
   });
});

SuccessHandler

function successHandler(data) {
  var a = JSON.parse(data.d);
  var b = [JSON.stringify(a)];
}

var treeData = successHandler[0]; //This part keeps giving me error

提前感谢您的所有帮助和支持。

2 个答案:

答案 0 :(得分:2)

当它是一个函数时,你试图以successHandler作为数组进行访问。你不能那样使用它。相反,将[JSON.stringify(a)]分配给全局变量,并在需要数据时访问该变量,如下所示:

var dataFromAjax; 
var treeData; 

function successHandler(data) {
    var a = JSON.parse(data.d);
    dataFromAjax = [JSON.stringify(a)];

    setTreeData();
}

function setTreeData() { //this function can be in the seperate script tag
    treeData = dataFromAjax[0]; 
}

答案 1 :(得分:0)

在这种情况下,您需要从函数返回对象并像successHandler()[0];

一样使用它



function successHandler(data) {
  var a = JSON.parse('[{"a":1, "b":2}]');
  return a; // you need to return the data from here.
}

var treeData = successHandler()[0]; //This part keeps giving me error
console.log(treeData)