我有一个jqplot条形图,我已经附加了一个onclick事件到酒吧。当我调用ajax函数时,它似乎都可以工作,但我没有收到任何数据。警报('Success')正在触发,但ret仍为null。我可以在开发人员工具中看到这个并看到json回来但它没有进入ret。我做错了什么?
$('#chartMonthly').bind('jqplotDataClick',
function (ev, seriesIndex, pointIndex, data) {
$('#info1').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data);
var ret = null;
var url = 'wmHours.php';
var obj = {};
obj.m = "1";
obj.d = "4";
obj.y = '2013';
$.ajax({
async: false,
url: url,
type: 'post',
data: obj,
dataType:"json",
success: gotData(ret)
}); // End ajax
}); // End function (ev, seriesIndex, pointIndex, data), end bind
function gotData(ret){
alert('Success!');
}
答案 0 :(得分:1)
试试这个:
$('#chartMonthly').bind('jqplotDataClick',
function (ev, seriesIndex, pointIndex, data) {
$('#info1').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data);
//var ret = null; remove this line as it is useless here
var url = 'wmHours.php';
var obj = {};
obj.m = "1";
obj.d = "4";
obj.y = '2013';
$.ajax({
//async: false, you shouldn't do this!!!
url: url,
type: 'post',
data: obj,
dataType:"json",
success: function(ret){gotData(ret);}
}); // End ajax
}); // End function (ev, seriesIndex, pointIndex, data), end bind
function gotData(ret){
alert('Success :'+ret);
}
BTW设置异步:false,对任何ajax请求都是一个坏主意!
答案 1 :(得分:1)
将success: gotData(ret)
更改为success: gotData
。
您只想提供回调处理程序名称,除非您在匿名函数中包装调用