可以看到json回到开发人员工具中,但它没有进入我的$ .ajax函数

时间:2013-01-06 14:49:32

标签: jquery ajax json jqplot

我有一个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!');

}

2 个答案:

答案 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

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