2017-08-03 24 views
0

私はasp.net Webアプリケーションでポップアップを実装しています。これによりユーザーは何かを選択でき、電子メールテンプレートが生成されます。すべての必須フィールドが完了したら、ユーザーはボタンをクリックして電子メールを送信します。ajaxを使用してJavaScriptからWebサービス.asmxを呼び出す

このボタンはfrom、to、subject、bodyなどのすべてのユーザー入力データを収集し、このデータをメールを送信するために作成したWebサービスに送信するjavascript関数を呼び出します。

私はmailtoを使いたくなかったので、私はWebサービスを利用しました。

$.ajax({ 
      type: 'POST', 
      url: "Services/MailService.asmx/SendMail", 
      dataType: "json", 
      contentType: 'application/json; charset=utf-8', 
      data: { 'loginName': "'" + loginName + "'", 'fromAddress': "'" + fromAddress + "'", 'toAddress': "'" + toAddress + "'", 'mailSubject': "'" + mailSubject + "'", 'mailBody': "'" + mailBody + "'"}, 
      success: function() 
      { 
       alert("The email was sent successfully!"); 
      }, 
      error: function(data) 
      { 
       alert("An error occurred while trying to send the email. " + data.responseText); 
      } 
     }); 

私は私がデータプロパティに挿入することは間違っていることを知っている:

問題は、私がデータを送信することができないということです。私は(一度に1つずつ)以下を、試してみました:

An error occurred while trying to send the email. {"Message":"Invalid web service call, missing value for parameter: \u0027mailBbody\u0027.","StackTrace":" at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"} 

または

An error occurred while trying to send the email. {"Message":"Invalid JSON primitive: loginName.","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"} 

私は何を理解していない:

data: JSON.stringify({ 'loginName': loginName, 'fromAddress': fromAddress, 'toAddress': toAddress, 'mailSubject': mailSubject, 'mailBody': mailBody }), 
data: { 'loginName': loginName, 'fromAddress': fromAddress, 'toAddress': toAddress, 'mailSubject': mailSubject, 'mailBody': mailBody }, 
data: { loginName: loginName, fromAddress: fromAddress, toAddress: toAddress, mailSubject: mailSubject, mailBody: mailBody }, 
data: "{ 'loginName': '" + loginName + "', 'fromAddress': '" + fromAddress + "', 'toAddress': '" + toAddress + "', 'maliSubject': '" + mailSubject + "', 'mailBody': '" + mailBody + "' }", 

これらのオプションはすべて私に次のエラーを与えます私は間違っている。

Webサービスは、次のようになります。

[System.Web.Script.Services.ScriptService] 
public class WebService1 : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public void SendMail(string loginName, string fromAddress, string toAddress, string mailSubject, string mailBody) 
    { 
     MailMessage mailMsg = new MailMessage(fromAddress, toAddress); 
     mailMsg.Subject = mailSubject; 
     mailMsg.Body = mailBody; 

     string pathToCreate = "~/Upload/" + loginName + "/"; 
     if (Directory.Exists(Server.MapPath(pathToCreate))) 
     { 
      if (Directory.GetFiles(Server.MapPath(pathToCreate)).Length > 0) 
      { 
       string[] attachedFiles = Directory.GetFiles(Server.MapPath(pathToCreate)); 
       foreach (string a in attachedFiles) 
       { 
        Attachment data = new Attachment(a); 
        mailMsg.Attachments.Add(data); 
       } 
      } 
     } 

     SmtpClient smtp = new SmtpClient(); 
     smtp.Send(mailMsg); 
    } 
} 

私はこの問題を解決するために何ができるか私と一緒に共有してください。

ありがとうございました!

答えて

0

私は正常に使用してデータを送信することができました:これは正しい方法であれば、私は知りませんが、それは働いて

data: '{loginName:' + JSON.stringify(loginName) + ', fromAddress:' + JSON.stringify(fromAddress) + ', toAddress:' + JSON.stringify(toAddress) + ', mailSubject:' + JSON.stringify(mailSubject) + ', mailBody:' + JSON.stringify(mailBody) + '}', 

を。

関連する問題