当我试图获取json类型数据以返回ajax调用时,我将未定义为返回。
function AjaxCallToGetData(){
var chartDataCheckin;
var checkin_location = $("#select_checkin_location").val();
jQuery.ajax({
'url': '<?php echo $this->modurl; ?>dashboard/checkinchart',
dataType: 'json',
data: {checkin_location: checkin_location},
'type': 'POST',
success: function(data) {
alert(data); // alerts object
return data;
}
});
}
function getcheckinchart(DataCheckin) {
alert('hi');
var chartDataCheckin = AjaxCallToGetData();
alert(chartDataCheckin); // this doesnot
}
请帮忙
答案 0 :(得分:1)
var testobj;
function AjaxCallToGetData(){
var chartDataCheckin;
var checkin_location = $("#select_checkin_location").val();
jQuery.ajax({
'url': '<?php echo $this->modurl; ?>dashboard/checkinchart',
dataType: 'json',
data: {checkin_location: checkin_location},
'type': 'POST',
success: function(data) {
alert(data); // alerts object
testobj=data;
}
});
}
function getcheckinchart(DataCheckin) {
alert('hi');
AjaxCallToGetData();
alert(testobj);
}
这将有效:)干杯
答案 1 :(得分:0)
您正在从异步调用中获取数据到服务器,但您希望以同步方式返回。使用全局变量或使用延迟对象或承诺:https://api.jquery.com/category/deferred-object/
答案 2 :(得分:0)
您的return语句位于(异步)AJAX操作的成功回调中,因此不会返回AjaxCallToGetData()的结果。
解决方案:
要么在成功回调中处理,要么创建自己的回调。我自己偏爱动态回调,所以我包含了一个基本的例子,我将回调函数作为参数传递。
function AjaxCallToGetData(callback){
var chartDataCheckin;
var checkin_location = $("#select_checkin_location").val();
jQuery.ajax({
url: '<?php echo $this->modurl; ?>dashboard/checkinchart',
dataType: 'json',
data: {checkin_location: checkin_location},
type: 'POST',
success: function(data) {
// Either process the data here or:
if (jQuery.isFunction(callback)) callback(data);
}
});
}
function getcheckinchart(DataCheckin) {
// Notice we're passing the callback function as a parameter
AjaxCallToGetData(processcheckinchart);
}
function processcheckinchart(data) {
alert(data); // alerts object
}
答案 3 :(得分:0)
ajax调用是异步的,因此当您在getcheckinchart
中发出警报时,数据仍然存在。这应该有用。
function AjaxCallToGetData(callback){
var chartDataCheckin;
var checkin_location = $("#select_checkin_location").val();
jQuery.ajax({
'url': '<?php echo $this->modurl; ?>dashboard/checkinchart',
dataType: 'json',
data: {checkin_location: checkin_location},
'type': 'POST',
success: function(data) {
alert(data); // alerts object
callback(null,data);
}
});
}
function getcheckinchart(DataCheckin) {
alert('hi');
AjaxCallToGetData(function(err,charDataCheckin){
alert(chartDataCheckin);
});
}