在我的aspx页面中无法识别脚本

时间:2015-06-06 12:25:53

标签: c# asp.net

我有这个脚本

axis(1, at=seq(2,6334,365), labels=format(d1y[seq(2,6334,365)],"%Y"))

这个应该调用脚本的按钮:

        <script type="text/javascript">
        var request;
        function GetDataUsingAJAX() {
            var value = document.getElementById("search").value;
            request = new XMLHttpRequest();
            request.onreadystatechange = ProcessResponse;
            request.open("GET", "SearchAjax.aspx?searchValue=" + value, true);
            request.send();
        }
        function ProcessResponse() {
            if (request.readyState == 4 && request.status == 200) {
                document.getElementById("result").innerHTML = request.responseText;
            }
        }
</script>

所有这些都在同一页面(aspx页面)。

我一直收到这个错误:

  

编译器错误消息:CS1061:&#39; ASP.search_aspx&#39;不包含   定义&#39; GetDataUsingAJAX&#39;没有扩展方法   &#39; GetDataUsingAJAX&#39;接受第一个类型的参数   &#39; ASP.search_aspx&#39;可以找到(你错过了使用指令或   汇编参考?)

无法找到 <asp:Button runat="server" Text="Search" OnClick="GetDataUsingAJAX()" CssClass="btn btn-default" />

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

OnClick是用于指示代码隐藏文件中的方法在单击按钮时在服务器上执行的属性。

您正在寻找在浏览器中执行javascript的OnClientClick

答案 1 :(得分:0)

如果您想触发AJAX通话,则不需要使用按钮。

Button是用于提交表单的WebControl。你不想提交任何东西,但你想要使用AJAX在本地完成一些事情。

在您的情况下,您不必设置OnClick而是OnClientClick。在提交之前,OnClientClick for a通常会有特别之处。您可能需要返回false才能实际停止提交,否则您的AJAX调用将无法按预期进行处理,因为页面本身处于新的往返状态。 您可以通过使GetDataUsingAJAX()返回false来停止提交。 然后将呼叫更改为:

OnClientClick="return GetDataUsingAJAX();"

Button的替代方案,没有任何服务器端要求,因此没有长clientID和viewstate是一个纯粹的超链接:

<a href="" onclick="return GetDataUsingAJAX();" class="btn btn-default">Search</a>

如果禁用提交也没有解决您的问题,请尝试在GetDataUsingAjax()中添加一个警报作为第一行,以查看它是否实际被调用。如果不是,则脚本可能不在您的页面上。