我有以下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 );
}
});
}
});
答案 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;
}
注意我添加html后如何添加click
处理程序。这使得添加处理程序比使用内联文本更清晰。
编辑 - 看到您的修改后,以下是toAjax()
功能未定义的原因。
另外,我会检查以确保toAjax()
已声明且不在函数范围内(例如,您没有在$(document).ready()
块中使用它。)