メールを送信するためのWebサービスを含む外部ドメインにWebサービスがあります
jquery ajax を使用してクロスドメイン Web サービスを呼び出したいのですが、問題は成功値を取得できなかったことです。Web サービスが正常に実行され、メールが送信されてもエラーになります。
firebug (Net タブ) をチェックインし、実行中に ?callback=[some jump function] を追加しましたが、その関数が見つからないため、適切なメッセージが表示されません。
以下は私のウェブメソッドです[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string SendMail()
{
string returnVal = string.Empty;
try
{
MailMessage message = new MailMessage();
message.From = new MailAddress("[from]");
message.To.Add("[to]");
message.Subject = "TEST";
message.Body = "TEST MAIL";
message.Priority = MailPriority.High;
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.Credentials = new NetworkCredential("[username]", "[password]");
client.Send(message);
returnVal = "[mycallback]({'status':'Success'})";
}
catch (System.Exception ex) { returnVal = "[mycallback]({'status':'Fail Reason: " + ex.Message + "'})"; }
return returnVal;
}
以下は私のajax jquery呼び出しです
$(document).ready(function(){
$.ajax({
type:"GET",
url:"http://audiomedia.dev.asentechdev1.com/MailSender.asmx/SendMail",
dataType:"jsonp",
jsonpCallback: 'mycallback',
success: function(data){
alert(json.Parse(data));
},
error: function (data) {
alert("Error: " + data.responseText);
}
});
function mycallback(data){
alert("CallBack: " + JSON.stringify(data));
}
});
戻り値を変更してコールバックを追加すると、サーバーからの返信 が少なくなりますが、メールを正常に送信した後でもエラーコールバックになります。成功メッセージをフォーマットする方法を教えてください。