Jquery 需要从ajax中获得价值
我正在调用文档就绪函数上的getValues函数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',
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+”
。如果回答了您的原始问题,请标记为已解决。