2015-11-04 3 views
0

У меня был код ниже, работающий в POC без переменных и с жестким кодированием. После ввода переменных для подготовки к использованию этого канала он перестает работать. Вероятно, есть синтаксическая ошибка, которую я не вижу, или (не смею сказать), что этот POC не может поддерживать такие запросы?jquery.ajax, вызывающий метод .aspx web

с моей страницы ASPX sendEmail.aspx

 [System.Web.Services.WebMethod] 
       public static string SendMyEmail(string EmailFromAddress, string EmailFromName, string EmailSubject, string EmailBody) 
       { 

        return "data from server: " + Environment.NewLine + 
          "EmailFromAddress = " + EmailFromAddress + Environment.NewLine + 
          "from = " + EmailFromName + Environment.NewLine + 
          "from = " + EmailSubject + Environment.NewLine + 
          "from = " + EmailBody; 

       } 

    <script type = "text/javascript"> 
    function ShowCurrentTime() { 
     alert("hi"); 

     $.ajax({ 
      type: "POST", 
      url: "SendEmail.aspx/SendMyEmail", 
      data: '{EmailFromAddress: "mike", EmailFromName="mike", EmailSubject="email subject here", EmailBody="email body here"}', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess, 
      failure: function (response) { 
       alert(response.d); 
      } 
     }); 
    } 

с моей веб-страницы HTML:

<script type = "text/javascript"> 
function ShowCurrentTime() { 
    alert("hi"); 

    $.ajax({ 
     type: "POST", 
     url: "SendEmail.aspx/SendMyEmail", 
     data: '{EmailFromAddress: "mike", EmailFromName="mike", EmailSubject="email subject here", EmailBody="email body here"}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccess, 
     failure: function (response) { 
      alert(response.d); 
     } 
    }); 
} 

function OnSuccess(response) { 
    alert("all good"); 

    alert(response.d); 
} 
</script> 
</head> 
<body style = "font-family:Arial; font-size:10pt"> 
<form id="form1" runat="server"> 
<div> 
Your Name : 
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
<input id="btnGetTime" type="button" value="Show Current Time" 
    onclick = "ShowCurrentTime()" /> 
</div> 
</form> 
</body> 
</html> 

Это хорошо работает, когда веб-метод имеет одну коляску (как показано ниже), даже с несколькими точками данных в данных json:

[System.Web.Services.WebMethod] 
     public static string SendMyEmail(string EmailFromAddress) 
     { 

      return "good data from server: " + EmailFromAddress; 

     } 
+1

Попробуйте передать все переменные, которым нужен веб-метод. вы просто отправляете EmailFromAddress, попробуйте добавить остальные. Скорее всего, передавая только один параметр, система ищет метод с этим параметром. – Paritosh

+0

no-go, я изначально имел это как: data: '{EmailFromAddress: "mike", EmailFromName = "mike", EmailSubject = "email subject here", EmailBody = "email body here"}, – kacalapy

ответ

3

Ваш ajax должен выглядеть следующим образом. Удалите '=' и замените на «:», чтобы создать правильный json в поле данных.

$.ajax({ 
    type: "POST", 
    url: "SendEmail.aspx/SendMyEmail", 
    data: '{EmailFromAddress: "mike", EmailFromName: "mike", EmailSubject: "email subject here", EmailBody: "email body here"}', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: OnSuccess, 
    failure: function (response) { 
     alert(response.d); 
    } 
}); 
+0

как тупой, json был неуклюжим. Спасибо друг. – kacalapy

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

  • Нет связанных вопросов^_^