2013-10-02 3 views
0

У меня есть функция сценария следующие Javaошибка вызова кода за C# метод из функции яваскрипта

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

и следующий код BEHIND метода

public Boolean setDone(int taskID) 
    { 
     BO.taskDao myTask = new BO.taskDao(); 
     Boolean success = myTask.setDone(1, taskID); 
     return success; 
    } 

и я хочу, чтобы вызвать метод setDone из функции яваскрипта и передавая taskID вместо 123, , но я не знаю, как это сделать. и я не знал, почему сервер автоматически запускает эту строку сценария «<% = setDone (123)%>», когда страница загружена и не имеет вызова. Функция «JavaScript»

+0

Вы предпочитаете использовать ajax или делать обратную передачу? –

ответ

2

Немного вещей.

Во-первых, вам необходимо украсить ваш метод атрибутом 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 
} 
1

Весь серверный встроенный код, такой как <%=setDone(123)%>, выполняется во время генерации страницы, а его позиция в JavaScript - это просто потому, что вы разместили его там.

Вы можете использовать встроенный код для передачи данных на стороне сервера в JavaScript таким образом.

Если вы хотите, чтобы JavaScript выполнял код на стороне сервера, вы можете использовать несколько методов. Как и WebMethods, описанные mattyTommo, вы можете поместить значение в поле ввода, а затем вызвать кнопку для кнопки на стороне сервера и на стороне сервера прочитать содержимое поля ввода.

Смежные вопросы