【问题标题】:Passing GET data from one function to another将 GET 数据从一个函数传递到另一个函数
【发布时间】:2016-01-09 22:08:21
【问题描述】:

我正在尝试将一些数据从一个函数传递到另一个函数。我进行了成功的 AJAX 调用并获得了数据。但我现在想不通的是如何将该数据传递给另一个函数。

'use strict'

$(document).ready(function() {
    console.log('Page Ready');

    changeColor();
    getData();
});


function getData(data) {
    var root = 'http://jsonplaceholder.typicode.com',
    data;

    data = $.ajax ({
        url: root + '/posts/1',
        type: 'GET',
        success: function(data) {
            console.log(data.body);
        }
    });
}

function changeColor(data) {
    $('button').on('click', function() {
        $('.classy').toggleClass('blue');
        $('.classy').append(data.body);
    });
}

有人可以建议我如何从getData 获取数据并将其传递给changeColour

【问题讨论】:

    标签: javascript json object http-get


    【解决方案1】:

    只需调用ajax成功中的changeColor方法并传递数据即可。从 getData 中删除了 data 变量,因为不需要它。

    'use strict'
    
    $(document).ready(function() {
        console.log('Page Ready');
    
        changeColor();
        getData();
    });
    
    
    function getData() {
        var root = 'http://jsonplaceholder.typicode.com';
    
        $.ajax ({
            url: root + '/posts/1',
            type: 'GET',
            success: function(data) {
                console.log(data.body);
                changeColor(data); //Just call the method here
            }
        });
    }
    
    function changeColor(data) {
        $('button').on('click', function() {
            $('.classy').toggleClass('blue');
            $('.classy').append(data.body);
        });
    }
    

    【讨论】:

      【解决方案2】:

      仅从 success: 函数调用您的 changeColor() 函数。

      function getData(data) {
          var root = 'http://jsonplaceholder.typicode.com',
          data = $.ajax ({
              url: root + '/posts/1',
              type: 'GET',
              success: function(data) {
                  console.log(data.body);
                  changeColor(data);
              }
          });
      }
      

      请注意,我删除了您简单的 data; 行,这没有任何意义。

      【讨论】:

        【解决方案3】:

        你可以把changeColor函数放到getData函数的成功调用中。

        function getData(data) {
            var root = 'http://jsonplaceholder.typicode.com',
            data;
        
            data = $.ajax ({
            url: root + '/posts/1',
                type: 'GET',
                success: function(data) {
                    console.log(data.body);
                    changeColor(data);
                }
            });
        }
        

        【讨论】:

          【解决方案4】:

          您基本上有两个选择:从成功函数中调用 changeColor 函数,或者在您的成功函数中将数据存储在可以在其他地方访问的变量中(直接通过 changeColor 或传递给 changeColor)。

          第二个选项可以通过访问全局变量(不是一个好主意)或传入一个对象来实现,然后将其传递给 changeColor。哪个最好真的取决于您的使用情况。

          【讨论】:

          • 感谢您对此的解释,非常感谢!
          猜你喜欢
          • 2018-07-29
          • 1970-01-01
          • 1970-01-01
          • 2022-01-13
          • 1970-01-01
          • 2017-03-31
          相关资源
          最近更新 更多