从javascript函数调用C#方法背后的代码时出错
我有以下java脚本函数从javascript函数调用C#方法背后的代码时出错,javascript,c#-4.0,code-behind,Javascript,C# 4.0,Code Behind,我有以下java脚本函数 <script type="text/javascript"> function taskDone(taskID) { alert(taskID); var btn = document.getElementById('btn-taskDone-' + taskID); var icon = document.getElementById('task-
<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>
我想从javascript函数调用setDone方法并传递taskID,而不是123,
但我现在不知道该怎么做。我不知道为什么服务器在加载页面时自动运行这行脚本“”,而不调用taskDone“JavaScript”函数
首先,您需要使用WebMethod
属性对方法进行解包,并使其为静态的。试试这个:
[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>
同时也有成功和失败方法(如上所述):
没什么
首先,您需要使用WebMethod
属性对方法进行解包,并使其为静态的。试试这个:
[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中的位置仅仅是因为您将它放在了那里
您可以使用内联代码以这种方式将服务器端数据传递给JavaScript
如果希望JavaScript执行服务器端代码,可以使用几种技术。除了mattyTommo描述的WebMethods之外,您还可以在输入框中输入一个值,然后调用按钮单击服务器端按钮,让服务器端代码读取输入框的内容。所有服务器内联代码(如
)都会在生成页面时执行,它在JavaScript中的位置仅仅是因为你把它放在了那里
您可以使用内联代码以这种方式将服务器端数据传递给JavaScript
如果希望JavaScript执行服务器端代码,可以使用几种技术。除了MattyOMMO描述的WebMethods外,您还可以在输入框中输入一个值,然后调用按钮单击服务器端按钮,让服务器端代码读取输入框的内容。您更喜欢使用ajax还是回发?您更喜欢使用ajax还是回发?
function onSuccessMethod(success) {
//query success
}
function onFailMethod() {
//check failure
}