将JSON值分配给驻留在JavaScript外部函数的变量

时间:2014-09-23 06:19:43

标签: javascript ajax json highcharts

我对JSON Web服务和AJAX功能有疑问。我在下面声明了一个JavaScript函数。

function setJsonSer(){

            formData = {
                'Email': 'clientlink@russell.com',
                'Password': 'russell1234',
                'URL': getVaria()
            };

                $.ajax({
                url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
                type: 'POST',
                data: formData,
                complete: function(data) {
                    alert("This is Set JSON In  "+JSON.stringify(data));
                }

            });

            $.ajax({
                url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
                type: 'GET',
                data: formData,
                complete: function(data) {
                    alert("This is Get JSON Out  "+JSON.stringify(data));
                }
            });

} 

正如您所看到的,我已提醒JSON.stingify(data)语句,它给了我预期的结果。

现在我想从该特定函数SetJsonSer()中获取该JSON响应,以分配给驻留在SetJsonSer()函数旁边的可变。

我已经尝试了return JSON.stringify(data))和JSON.stringify(数据)语句,但是他们没有将结果从SetJsonSer()函数中删除。

输出必须从如下变量中获取。

function Load(){

// --------------------------------------------- -

setJsonSer();

var labels = new Array();
var values = new Array();
var catogories = new Array();
var arrayOfArray = new Array();

var rowData = "return value of JSON.stringify(data)";

此变量将用作使用HighCharts绘制图表的查询。那么有人能给我一个线索如何获得SetJsonSer()函数的结果吗?

谢谢和问候, Chiranthaka

1 个答案:

答案 0 :(得分:2)

你对AJAX的异步特性感到厌倦。

AJAX事件正在被触发,但它不会导致代码执行暂停,因此,您需要实现回调。

这段代码并不是特别好,但它可以让您了解如何处理数据。

function setJSONSer() {
    formData = {
        'Email': 'clientlink@russell.com',
        'Password': 'russell1234',
        'URL': getVaria()
    };

    $.ajax({
        url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
        type: 'POST',
        data: formData,
        complete: function(data) {
            console.log("Successfullly set JSON!");
            getJSONSer();
        }
    });
}

function getJSONSer()
{
    $.ajax({
        url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
        type: 'GET',
        complete: function(data) {
            //alert("This is Get JSON Out  "+JSON.stringify(data));#
            Load(data);
        }
    });
}

function BeginLoad()
{
    setJSONSer();
}

function Load(data)
{
    setJsonSer();

    var labels = new Array();
    var values = new Array();
    var catogories = new Array();
    var arrayOfArray = new Array();

    var rowData = "return value of JSON.stringify(data)";
}

BeginLoad();