如何创建jquery ajax作为单独的函数

How to create jquery ajax as separate function?

本文关键字:单独 函数 ajax jquery 何创建 创建      更新时间:2023-09-26

我想创建一个单独的函数从Facebook图形JSON获取特定的数据。例如,我有load()和调用getNextFeed()函数。

getNextFeed工作正常。除了aString的返回值不成功。当我弹出alert(thisUrl)它说未定义。

注意:我是Javascript和Jquery的新手。请告诉我我哪里做错了。谢谢你。

    function load()
    {
         $(document).ready(function() {
         var token = "AccessToken";
         var url = "https://graph.facebook.com/me/home?access_token=" + token;      
          var thisUrl = getNextFeed(url);
         alert(thisUrl); // return undefined
    });


    function getNextFeed(aUrl)
    {   
          $.ajax({
           type: "POST",
           url: aUrl,
           dataType: "jsonp",
           success: function(msg) {
           alert(msg.paging.next); // return correctly
            var aString = msg.paging.next;
            alert(aString); // return correctly
            return aString;
           }
        });
     }

问题是$.ajax()是一个异步函数,这意味着,当调用时,它在同一个实例中返回,但是ajax调用是在一个单独的线程中完成的。所以$.ajax()的返回值总是未定义的。

您必须使用ajax回调函数来做您需要做的任何事情:基本上您已经正确地完成了它,只是return aString不会返回到原始调用函数。所以你能做的就是在回调函数(success())中调用一个函数,或者直接在success()函数中实现逻辑。

的例子:

function load()
    {
         $(document).ready(function() {
         var token = "AccessToken";
         var url = "https://graph.facebook.com/me/home?access_token=" + token;      
         getNextFeed(url);
         alert('Please wait, loading...');
    });


    function getNextFeed(aUrl)
    {   
          $.ajax({
           type: "POST",
           url: aUrl,
           dataType: "jsonp",
           success: function(msg) {
           alert(msg.paging.next); // return correctly
            var aString = msg.paging.next;
            alert(aString); // return correctly
            do_something_with(aString);
           }
        });
     }