jQuery:无法调用函数

时间:2014-03-07 20:13:20

标签: javascript jquery telerik

我有一些使用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>

1 个答案:

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