[英]Unable to access json object in javascript return
當我嘗試獲取Ajax調用返回的json類型數據時,我將未定義為return。
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
}
請幫忙
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);
}
這將起作用:)干杯
您正在從異步調用中獲取數據到服務器,但是期望以同步方式返回。 使用全局變量或使用延期對象或承諾: https : //api.jquery.com/category/deferred-object/
您的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
}
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);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.