2015-11-04 49 views
0

我有以下代码工作在POC没有变量和硬编码的一切。在引入变量以准备使用此通道后,它停止工作。可能是,我没有看到语法错误,或者(我不敢说)这个POC无法支持这样的请求?jquery.ajax调用一个.aspx网页方法

从我的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> 

它运作良好,当Web方法有一个婴儿车(如下图所示),甚至在json数据中有多个数据点:

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

      return "good data from server: " + EmailFromAddress; 

     } 
+1

尝试传入webmethod需要的所有变量。你只是发送EmailFromAddress,尝试添加其余的。这个系统最有可能只传递1个参数,正在寻找只有该参数的方法。 – 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