自定义功能错误 - “未定义”

时间:2011-10-08 15:36:04

标签: javascript jquery

我有以下Javascript代码:

$('td:eq(2)', nRow).html('<a class="critical" href="#" OnClick="toAjax(\''+aData[1]+'\', \''+aData[2]+'\');">'+aData[3]+'</a>');

我在Firebug中收到以下错误消息

  

toAjax未定义

我的功能:

    $(document).ready(function() {

        oTable = $('.statisticsTable').dataTable({

                "bJQueryUI" : true,

                "iDisplayLength" :50,

                "sAjaxSource": 'arrays.txt',

                "aoColumns"   : [{ "bSearchable": true, "bVisible": false },null, null, null, null, null,null,null,null,null,null],

                "fnRowCallback" : function(nRow, aData, iDisplayIndex) {

                    if (aData[3] == "1") {
                        $('td:eq(2)', nRow).html('<a class="critical" href="#" OnClick="toAjax(\''+aData[1]+'\', \''+aData[2]+'\');">'+aData[3]+'</a>');

                        } 

                    else if

                    (aData[4] == 123) {
                        $('td:eq(3)', nRow).html( '<a class="critical" href="serverID='+aData[0]+'&db='+aData[1]+'&task=Workload'+'">'+aData[2]+'<span class="highcharts"></span></a>' ).attr("class","kritikal");



                    } 

                    else if

                    (aData[3] >1) {
                        $('td:eq(3)', nRow).html( '<a id="ajax_call" class="critical" href="#">'+aData[3]+'<span class="highcharts"></span></a>' );

                        } 

                    return nRow;
                },


            } );


        function toAjax( server, db )
        {
            $.ajax({
                type: "POST",
                url: "someurl.php",
                data: "server=" + server + "&db=" + db,
                success: function(msg){
                    alert( "Data Saved: " + msg );
                }
            });
        }


    }); 

1 个答案:

答案 0 :(得分:1)

我可以让它工作(一个简化的例子):

<table>
    <tbody>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>1</td>
        </tr>
    </tbody>
</table>

$(document).ready(function(){
    var aData = [1,2,3,4];
    $('td:eq(2)')
        .html('<a class="critical" href="#">'+aData[3]+'</a>')
        .children('a.critical')
            .click(function(){
                toAjax(aData[1],aData[2]);
            });
});

function toAjax( server, db )
{
    console.log(server, db);
    return false;
}

http://jsfiddle.net/Va39r/2/

注意我添加html后如何添加click处理程序。这使得添加处理程序比使用内联文本更清晰。

编辑 - 看到您的修改后,以下是toAjax()功能未定义的原因。

另外,我会检查以确保toAjax()已声明且不在函数范围内(例如,您没有在$(document).ready()块中使用它。)