2015-05-19 2 views
1

У меня есть функция, как этотВызов C# функция (WebMethod) от Javascript (JQuery)

[WebMethod] 
    public static string Hello() 
    { 
     return "hello"; 
    } 

Я хочу назвать его в моей странице ASPX. так это то, что я пытаюсь

function sendData(){ 
     $.post("Default.aspx/Hello", function(data){ 
      alert(data); 
     }).fail(function() { 
      alert("error"); 
     }); 
    } 

Теперь caling это успешно и не возвращает ошибку, но не возвращает то, что я хочу. Вместо того, чтобы возвращать строку «hello», она возвращает мне строку html страницы

ответ

1

Вы должны использовать data.d:

function sendData(){ 
     $.post("Default.aspx/Hello", function(data){ 
      alert(data.d); 
     }).fail(function() { 
      alert("error"); 
     }); 
    } 

Dave Ward article почему вы должны использовать .d

Вы также должны убедиться, что вы добавили менеджер сценария и EnablePageMethods т.е.

<asp:ScriptManager runat="server" EnablePageMethods="true"> 
</asp:ScriptManager> 
+0

спасибо ... почему я не смог найти это .D помощь в другом месте в Интернете? – Kevin

+0

@Kevin Нет проблем, было намного проще найти в других местах. Я знаю только об этом. Я думаю, это было для json, ущемляющего проблемы безопасности. – hutchonoid

0

Я думаю, вы должны использовать $ .ajax вместо $ .post в вашем js-методе, поскольку метод GET http является значением по умолчанию используемые в контроллерах, если не указано иное.

0

Я думаю, что вы близки. В моем проекте я использую $ .ajax. Я предоставил образец кода из моего проекта (который отлично работает), и я надеюсь, что это поможет.

C#

[WebMethod] 
    public static List<ConnectionStatusInfo> GetConnectionStatus() 
    { 
     ..... 
    } 

JavaScript

$.ajax({ url: "ConnectionStatus.aspx/GetConnectionStatus", 
      dataType: "json", 
      type: 'POST', 
      data: null, 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 

      }, 
      error: function (d) { 

      } 
     }); 
Смежные вопросы