0

我有一个 jqplot 条形图,并且在条形图上附加了一个 onclick 事件。当我调用 ajax 函数时,它似乎一切正常,但我没有得到任何数据。alert('Success') 正在触发,但 ret 仍然为空。我可以在开发人员工具中看到这个并看到 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!');

}
4

2 回答 2

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);

}

顺便说一句,对任何 ajax 请求设置 async: false 确实是个坏主意!

于 2013-01-06T14:52:03.327 回答
1

更改success: gotData(ret)success: gotData

您只想提供回调处理程序名称,除非您将调用包装在匿名函数中

于 2013-01-06T14:59:26.873 回答