Вопрос по c#, asp.net, javascript – Вызов метода страницы asp.net из JavaScript не работает

9

Привет, я вызываю простой метод страницы из JavaScript, вот мой код в разметке

 function OnCallSumComplete(result, userContext, methodName) {             
            alert(result);
 }
 function OnCallSumError(error, userContext, methodName) {
     if (error !== null) {
         alert(error.get_message());
     }
 }
 function test(){
     var contextArray = "";
     PageMethods.TestMethod("test parameter", OnCallSumComplete, OnCallSumError,  contextArray);
 }

 <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" />

на CS

 [System.Web.Services.WebMethod]
 public static string TestMethod(string para)
 {

    return "Yes this is working";
 }

в уведомлении отображается результат, и в нем указано «null». Я проверяю firebug и не вижу ошибки с консоли.

Если я изменю TestMethod на

 [System.Web.Services.WebMethod]
 public static string TestMethod()
 {
    return "Yes this is working";
 }

И PageMethod для

 PageMethods.TestMethod( function (response) { alert(response);  } );

Правильный ответ отображается как «Да, это работает». Тем не менее, мне нужно передать параметр в функцию. Я что-то пропустил?

Спасибо за помощь.

Ваш Ответ

4   ответа
2

Я думаю, что вы должны использовать [ScriptMethod] вместо или в дополнение к [WebMethod], чтобы иметь доступ к методам asmx через вызовы javascript. Причина, по которой он может работать без принятия параметра, заключается в том, что запрос не должен анализировать что-либо для обработки метода.

Попробуйте сделать это с помощью [ScriptMethod] (и, возможно, [ScriptService] в вашем определении класса) и посмотрите, имеет ли это значение.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded windforceus
Error: User Rate Limit Exceeded windforceus
Error: User Rate Limit Exceededencosia.com/never-worry-about-asp-net-ajaxs-d-againError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded windforceus
0

из того, что я помню, вам просто нужно 3 параметра в вашем вызове (ваш параметр, onsuccess и onfailure). ты пытался использовать PageMethods.TestMethod («тестовый параметр», OnCallSumComplete, OnCallSumError);

Error: User Rate Limit Exceeded windforceus
1

Проблема в том, что в вашем файле Web.config должен быть включен модуль (IHttpModule): ScriptModule-4.0. Это включено по умолчанию, но вы, возможно, удалили его. Если вам интересно, поищите его в файле Web.config для всей машины и посмотрите, был ли он удален из вашего локального файла Web.config. Его объявление должно быть в system.webServer / modules (для IIS = 7) и system.web / httpModules для встроенного веб-сервера Visual Studio или IIS & lt; 7.

3

Я думаю, что основная проблема заключается в сборке, которую вы используете для ScriptManager.

<asp:ScriptManager ID="ScriptManager1" 
                   EnablePageMethods="true" 
                   runat="server" />

Чтобы решить вашу проблему, используйте в Webconfig -

<pages>
  <controls>
    <add tagPrefix="ajax" 
         namespace="System.Web.UI" 
         assembly="System.Web.Extensions, 
                   Version=1.0.61025.0, 
                   Culture=neutral, 
                   PublicKeyToken=31bf3856ad364e35"/>
  </controls>
</pages>

и на вашей странице .aspx используйте следующие строки -

<ajax:ScriptManager ID="ScriptManager1" 
                    EnablePageMethods="true" 
                    runat="server" />

Надеюсь, что это поможет вам решить вашу проблему.

Похожие вопросы