1

私は MVC を構築しており、最初の ajax 呼び出しを試みています。コントローラーのアクション メソッドに int を送信するだけで、一部のデータが DB に保存され、「正常に保存された」ビューが返されます。Get で ID を送信する ActionLink があったので、アクション メソッドが機能することはわかっていますが、すべて問題ありませんでした。ここで、それを投稿に切り替える必要がありますが、ActionLinks は投稿を行いません。だから私はajaxを試しています。

ここに私のajaxがあります:

 $(document).ready(function () {
    $("#button-save").click(function () {
        var applicantId = $("#PersonModel_ApplicantID").val();

        $.ajax({
            url: '<%: Url.Action("SaveRecord") %>',
            data: { 'id': applicantId },
            type: "post"
        });
    });
});

この部分が機能することはわかっていますが、「成功した保存」ページが表示されないため、「成功」オプションが必要です。私はいくつかの異なるチュートリアルを見てきましたが、正直なところ、成功することは私を混乱させます. アクション メソッドはすべて、必要なメッセージを配信するように設定されています。

        }
        else
        {
            return View("Error_RecordExists");
        }

        return View(model);

それで、ajaxに伝える方法があるかどうか疑問に思っています(IDを送信したら、邪魔にならないようにするか、何か。ありがとう。

4

2 に答える 2

1

success 部分は、Ajax が正常に完了したときに呼び出される関数です。応答を含め、jQuery によってパラメーターとして渡される多くのものがあります。

関数の定義は...

Function( PlainObject data, String textStatus, jqXHR jqXHR )

だからあなたはするだろう...

$.ajax({
    ...
    success: function(data, textStatus, jqXHR) {
        $("#SomeResultDiv").html(data); //Put the response in the div with Id "SomeResultDiv"
    }
});

dataオブジェクトには、応答が文字列として含まれます。

textStatusかなり自明です。リクエストの HTTP ステータスのテキストによる説明。

jqXHRjQuery XmlHttpRequest オブジェクトです。これは、各ブラウザーで使用される XmlHttpRequests のラッパーです。ヘッダー、http 応答コードなどの情報を提供します。詳細については、ドキュメントを参照してください。

必要ない場合は、リストの末尾からパラメーターを省略できます。

    success: function(data) {...}

完全に有効です。

Json オブジェクトを返す Web メソッドを呼び出す$.json()代わりに使用できることに注意してください。$.ajax()これらは、サーバーがフォーマットについて認識していない場合に非常に便利です。たとえば、統計情報を JSON オブジェクトとして報告するだけのサーバーがあるとします。Javascript はそのデータをロードし、必要に応じて div/graphs/etc を作成できます。サーバー側のきれいなコード、関心の分離 (データと書式設定)、およびその他の多くの利点を提供します。

于 2013-03-05T00:08:28.537 に答える
0

以下は、webmethod を使用した簡単なメール送信コードのサンプルです。

[System.Web.Services.WebMethod]
public static int SendMail(string Name, string FromEmail, string Body)
{
    StringBuilder sbBody = new StringBuilder();
    string ToEmail = "goldramesh.cool@gmail.com";
    sbBody.Append(Name + ",");
    sbBody.Append("<br/>");
    sbBody.Append("<br/>");
    sbBody.Append(Body);
    Contact contact = new Contact();
    //string script = "alert('Message sent successfully');window.location ='Contact.aspx';";
    System.Net.Mail.MailMessage eMail = new System.Net.Mail.MailMessage();
    eMail.From = new System.Net.Mail.MailAddress(FromEmail);
    eMail.To.Add(ToEmail);
    eMail.Subject = "Contact from  " + FromEmail;
    eMail.IsBodyHtml = true;
    eMail.Body = Body;
    SmtpClient SMTP = new SmtpClient();
    SMTP.Send(eMail);
    eMail.Dispose();
    contact.Clear();
    return 1;
}

そしてAjaxコーディングは

var pageUrl = 'Contact.aspx';
        $.ajax({
            url: pageUrl + '/SendMail',
            type: "POST",
            data: '{Name: "' + Name + '",FromEmail: "' + FromEmail + '",Body: "' + Body + '"}',
            dataType: "json",
            contentType: "application/json",
            **success: function (data) {// Success 
                if (data.d == 1) {//Check success code** 
                    $("input[type=button]").val("Send Mail");
                    alert("Mail successfully sent");                     
                }
            }
        });  

私のWebメソッドはreturn 1です。したがって、data.d == 1をチェックしました

私のサンプルウェイを見ることができます......

于 2013-03-05T18:04:43.120 に答える