Melih511
Melih511

Reputation: 163

Taking data out of the Ajax Jsonp

I want to taking data out of the Ajax Jsonp.
Why doesn't work this app?
Please Help.

var res;
  $.ajax({
    url: 'https://api-metrica.yandex.com/analytics/v3/data/ga?end-date=today&ids=ga%3A35416355&dimensions=ga:pagePath&metrics=ga:users&filters=ga:pagePath==/p/etkinlikler.html&start-date=2015-10-25&oauth_token=AQAAAAAVs-uLAASpEAf-MmJK_kHgpU9Fwv8WArM',
    dataType: 'jsonp',
    async: false,
    success: function(result) { 
        res = result.totalsForAllResults["ga:users"];
        }
    });
    $("div").html(res);

https://jsfiddle.net/q6vfgemp/

Upvotes: 0

Views: 67

Answers (3)

Youssef Sobhy
Youssef Sobhy

Reputation: 343

The data is retrieved correctly but since the request is async you cannot set the html outside of the success callback, put it inside the success callback and it will work.

Also it's a good practice to console.log the data when you're not sure where the problem is to make sure it is retrieved successfully.

Edit: Here is why the async: false option is not working, check the accepted answer for the details.

Upvotes: 1

Heiko Jakubzik
Heiko Jakubzik

Reputation: 419

Since the request is asynchronous, your code sets the "div" before the result is actually retrieved. In order to make sure you retrieve the result, and then set the div, do this:

  $.ajax({
    url: 'https://api-metrica.yandex.com/analytics/v3/data/ga?end-date=today&ids=ga%3A35416355&dimensions=ga:pagePath&metrics=ga:users&filters=ga:pagePath==/p/etkinlikler.html&start-date=2015-10-25&oauth_token=AQAAAAAVs-uLAASpEAf-MmJK_kHgpU9Fwv8WArM',
    dataType: 'jsonp',
    async: false,
    success: function(result) { 
        res = result.totalsForAllResults["ga:users"];
        $("div").html(res);
        }
    });

Upvotes: 0

SyncroIT
SyncroIT

Reputation: 1578

In JSONP you should add a callback parameter to the request. The response would be a script calling your callback with the requested data.

So, you should call a URL like this:

http://domain.ext/?callback=xxx

And you should have a function with name "xxx":

function xxx(data) {
    // Here you can manage the received data 
}

Also, the requested resource should support JSONP, if it doesn't you will not receive anything in your callback.

Upvotes: 0

Related Questions