[英]error in calling code behind C# method from javascript function
我有以下的Java脚本功能
<script type="text/javascript">
function taskDone(taskID) {
alert(taskID);
var btn = document.getElementById('btn-taskDone-' + taskID);
var icon = document.getElementById('task-icon-' + taskID);
btn.style.color = '#8F9199';
btn.onclick = "";
btn.style.cursor = 'default';
icon.src = "./../Images/Icons/doneTask.png";
'<%=setDone(123)%>'
}
</script>
和下面的方法后面的代码
public Boolean setDone(int taskID)
{
BO.taskDao myTask = new BO.taskDao();
Boolean success = myTask.setDone(1, taskID);
return success;
}
而且我想从javascript函数调用setDone方法并传递taskID而不是123,但是我现在不知道该怎么做。 而且我不知道为什么服务器在页面加载后没有调用taskDone“ JavaScript”函数的情况下自动运行此脚本脚本'<%= setDone(123)%>'
一些事情。
首先,您需要使用WebMethod
属性来修饰您的方法,并将其设置为static
。 尝试这个:
[WebMethod]
public static Boolean setDone(int taskID)
{
BO.taskDao myTask = new BO.taskDao();
Boolean success = myTask.setDone(1, taskID);
return success;
}
现在,确保您具有ScriptManager
:
<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true"> </asp:ScriptManager>
然后在JavaScript中,您可以通过以下方式调用它:
PageMethods.setDone(taskID, onSuccessMethod,onFailMethod);
同时也有成功和失败方法(上面已传递):
function onSuccessMethod(success) {
//query success
}
function onFailMethod() {
//check failure
}
所有服务器内联代码(例如<%=setDone(123)%>
都是在页面生成期间执行的,它在JavaScript中的位置仅仅是因为您将其放置在页面中。
您可以使用内联代码以这种方式将服务器端数据传递给 JavaScript。
如果希望JavaScript执行服务器端代码,则可以使用多种技术。 就像mattyTommo所描述的WebMethods一样,您可以在输入框中输入一个值,然后为服务器端按钮单击按钮并让服务器端代码读取输入框的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.