Jquery 需要从ajax中获得价值

Jquery 需要从ajax中获得价值,jquery,ajax,codeigniter,Jquery,Ajax,Codeigniter,我正在调用文档就绪函数上的getValues函数 jQuery(document).ready(function () { getValues(); }); var getValues= function() { var html = ''; jQuery.ajax({ url: 'controller/function', type: 'GET', dataType: 'json',

我正在调用文档就绪函数上的getValues函数

jQuery(document).ready(function () {

        getValues();

    });
var getValues= function() {
    var html = '';

    jQuery.ajax({
        url: 'controller/function',
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            jQuery.each(data, function (index, element) {
              rate=getOffValue(element.off_id);

                        html += '<div class="col-md-3" style="padding:10px"><div class="row"></div></div>';


            });
            jQuery("#div").append(html);




        },
        error: function (data) {
            alert("Error" + data);
        }

    });

}
var getOffValue = function(id) {
    var html = '';

   return jQuery.ajax({
        url: 'controller/function1',
        type: 'POST',
        dataType: 'json',
        data: {off_id:id},
        success: function (data) {
            return data[0].rate;
            },
        error: function (data) {
            alert("Error" + data);
        }

    });

}
下面给出了getValues函数。它正在调用getOffValue函数

jQuery(document).ready(function () {

        getValues();

    });
var getValues= function() {
    var html = '';

    jQuery.ajax({
        url: 'controller/function',
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            jQuery.each(data, function (index, element) {
              rate=getOffValue(element.off_id);

                        html += '<div class="col-md-3" style="padding:10px"><div class="row"></div></div>';


            });
            jQuery("#div").append(html);




        },
        error: function (data) {
            alert("Error" + data);
        }

    });

}
var getOffValue = function(id) {
    var html = '';

   return jQuery.ajax({
        url: 'controller/function1',
        type: 'POST',
        dataType: 'json',
        data: {off_id:id},
        success: function (data) {
            return data[0].rate;
            },
        error: function (data) {
            alert("Error" + data);
        }

    });

}

我需要将getOffValue函数的成功结果返回给函数getOffValue。需要在rate变量中获取该值。并且需要在html中附加该值。但此代码不起作用。将该值显示为未定义。提前感谢您可以尝试使用
Promissions
。这段代码还没有经过测试,也没有经过优化,但是应该解释一下这个概念

function getOffValue(id) {
    var deferred = jQuery.Deferred();
    jQuery.ajax({
        url: 'controller/function1',
        type: 'POST',
        dataType: 'json',
        data: {off_id:id},
        success: function (data) {
            return deferred.resolve(data[0].rate);
        },
        error: function (data) {
            alert("Error" + data);
            return deferred.reject(data);
        }

    });
    return deferred.promise();
}

var getValues= function() {
    var html;
    jQuery.ajax({
        url: 'controller/function',
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            jQuery.each(data, function (index, element) {
                getOffValue(element.off_id).then(function(rate) {
                    console.log('rate', rate); //you need to append it to the html
                    html = '<div class="col-md-3" style="padding:10px"><div class="row"></div></div>';
                    jQuery("#div").append(html);
                });
            });
        },
        error: function (data) {
            alert("Error" + data);
        }
    });
}
函数getOffValue(id){
var deferred=jQuery.deferred();
jQuery.ajax({
url:“控制器/函数1”,
键入:“POST”,
数据类型:“json”,
数据:{off_id:id},
成功:功能(数据){
返回延迟。解析(数据[0]。速率);
},
错误:函数(数据){
警报(“错误”+数据);
延迟返回。拒绝(数据);
}
});
延迟返回。承诺();
}
var getValues=function(){
var-html;
jQuery.ajax({
url:“控制器/函数”,
键入:“GET”,
数据类型:“json”,
成功:功能(数据){
每个(数据、函数(索引、元素){
getOffValue(元素off_id)。然后(函数(速率){
log('rate',rate);//您需要将其附加到html中
html='';
jQuery(“#div”).append(html);
});
});
},
错误:函数(数据){
警报(“错误”+数据);
}
});
}

请记住,为了提高性能,您正在对
controller/function1
执行多个ajax调用,您可能应该对此进行优化,以便function1返回一个速率数组。

Ajax是一个异步调用,因此您必须为此功能使用承诺/可观察项这是一个不同的问题,但理论上您可以使用该值执行任何操作,例如
html=“+rate+”
。如果回答了您的原始问题,请标记为已解决。