0

jqplot棒グラフがあり、onclickイベントを棒に添付しました。ajax関数を呼び出すと、すべて機能しているように見えますが、データが返されません。alert('Success')は発生していますが、retはまだnullです。これを開発者ツールで見て、jsonが戻ってくるのを見ることができますが、それはうまくいきません。私は何が間違っているのですか?

    $('#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 に答える