我有一些使用Telerik RadGrid的代码。当我把它放在一个新页面上时,我一直得到$未定义ajax是未定义的,直到我引入了jQuery库(即使它包含在母版页中)。我按下按钮时尝试调用DoUpdate并获得未定义的错误。
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script src="../Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
function DoUpdate(sbiId) {
var input = '{"SbiId":"' + sbiId + '"}';
var dataSource;
$.ajax({
url: "http://www.blah.com/services/testsService.svc/GetContactsDataAndCount",
type: "GET",
contentType: "application/json; charset=utf-8",
data: input,
dataType: "json",
success: function (data) {
// updateGrid(data);
var mtv = $find("<%= RadGrid1.ClientID %>").get_masterTableView();
console.log(data);
mtv.set_dataSource(data.d.Data);
mtv.dataBind();
}
});
}
});
</script>
</telerik:RadCodeBlock>
<p>
<asp:Button ID="Button1" runat="server" Text="Update" OnClientClick="DoUpdate(1); return false" />
</p>
答案 0 :(得分:2)
DoUpdate在$(document).ready(function(){})中 - 因此,外部的任何东西都无法访问它。
以下是解决此问题的两种方法 - 使用jQuery选择按钮并连接click事件,或者将该函数暴露在ready块之外。以下是后者:
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script src="../Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var DoUpdate;
$(document).ready(function () {
DoUpdate = function(sbiId) {
var input = '{"SbiId":"' + sbiId + '"}';
var dataSource;
$.ajax({
url: "http://www.blah.com/services/testsService.svc/GetContactsDataAndCount",
type: "GET",
contentType: "application/json; charset=utf-8",
data: input,
dataType: "json",
success: function (data) {
// updateGrid(data);
var mtv = $find("<%= RadGrid1.ClientID %>").get_masterTableView();
console.log(data);
mtv.set_dataSource(data.d.Data);
mtv.dataBind();
}
});
}
});
</script>
</telerik:RadCodeBlock>
<p>
<asp:Button ID="Button1" runat="server" Text="Update" OnClientClick="DoUpdate(1); return false" />
</p>