簡體   English   中英

從AJAX函數獲取變量值到外部

[英]Getting a variable value from an AJAX function to outside

我在AJAX函數下面有這個函數,它將訪問ASMX Web服務並生成JSON響應。 JSON生成良好。 我想將此生成的JSOn傳遞給另一個函數中的外部變量。

function setJsonSer() {
                         var strWsUrl = 'https://www.googleapis.com/analytics/v3/data/ga?   
ids=ga%3A76546294&dimensions='+ 'ga%3Asource&metrics=ga%3Ausers&sort=-ga%3Ausers&start-
date='+retStartDate()+'&end-date='+retEndDate()+'&max-results=10';
    formData = {
            'Email': 'clientlink@client.com',
            'Password': 'password',
            'URL': strWsUrl
        };
             $.ajax({
            url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
            type: 'POST',
            data: formData,

            complete: function(data) {
                      var responseText = data.responseText;
        /****01****/  var responseJson = JSON.parse(responseText.match(/[{].*.[}]/));
          console.log(responseJson);

                      Load(JSON.stringify(responseJson));
            }
        });
    }

您可以看到/ **** 01 **** /表示JSON響應正在傳遞給同一函數中的另一個變量。 我嘗試了“ return”語句,但沒有幫助。 那么,我該怎么做才能解決這個問題? 你能解決這個問題嗎?

UPDATE

我想將此responseJson傳遞給以下函數Load()。 它應該替換rowData值。 你們在建議我什么?

function Load(){

// ----------------------------------------------- Rohan

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


        var rowData = ??????????????;
    console.log("'RowData' is " + typeof rowData );  

        inData = JSON.parse(rowData);

        var count = 0;
        var headers = new Array();
        for (var i = 0; i < inData.columnHeaders.length; i++) {
            headers[i] = inData.columnHeaders[i].name;
        }

        var dates = new Array();
        var pageViews = new Array();
        var uniqueViews = new Array();
        for (var key in inData.rows) {

                dates[key] = inData.rows[key][0];

            pageViews[key] = parseInt(inData.rows[key][1]);
            uniqueViews[key] = parseInt(inData.rows[key][2]);

        }

        $('#container_2').highcharts({
            chart: {
                type: 'areaspline', zoomType: 'x'
            },
            title: {
                text: 'Pageviews and Bounces'
            },
            legend: {
                layout: 'vertical',
                align: 'left',
                verticalAlign: 'top',
                x: 150,
                y: 100,
                floating: true,
                borderWidth: 1,
                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || 
  '#FFFFFF'
            },
            xAxis: {
                categories: dates,
                type: 'datetime',
                dateTimeLabelFormats: {
                    month: '%d %b',
                },
                tickInterval: 10,
                plotBands: [{ // visualize the weekend

                    color: 'rgba(68, 170, 213, .2)'
                }]
            },
            yAxis: {
                title: {
                    text: 'Visits'
                }
            },
            tooltip: {
                shared: true,
                valueSuffix: ' '
            },
            credits: {
                enabled: false
            },
            plotOptions: {
                areaspline: {
                    fillOpacity: 0.5
                }
            },
            series: [{
                name: 'Page Views',
                data: pageViews
            }, {
                name: 'Bounces',
                data: uniqueViews
            }]
        });
}

感謝和問候,Chiranthaka

應該使用回調函數

function functionWantToCallAjax()
{
      //Do some Operation
      setJsonSer(function(value){ //Do what u want to do with returned value });
}

function setJsonSer(callback) {
  var strWsUrl = 'https://www.googleapis.com/analytics/v3/data/ga?   
  ids=ga%3A76546294&dimensions='+ 'ga%3Asource&metrics=ga%3Ausers&sort=-ga%3Ausers&start-
  date='+retStartDate()+'&end-date='+retEndDate()+'&max-results=10';
  formData = {
        'Email': 'clientlink@client.com',
        'Password': 'password',
        'URL': strWsUrl
  };
  $.ajax({
   url: "/APIWebService.asmx/AnalyticsDataShowWithPost",
   type: 'POST',
   data: formData,
   complete: function(data) {
                  var responseText = data.responseText;
    /****01****/  var responseJson = JSON.parse(responseText.match(/[{].*.[}]/));
                  console.log(responseJson);


                  Load(JSON.stringify(responseJson));

                  //Call Back function  
                  callback(responseJson); 
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM