jQueryのAJAX対応ASP.NET MVC
-
13-09-2019 - |
質問
ないことの付き合い方"について考えるタイトルの問題をもたらしていました。知っていったほうがいいと思うよっAJAX通話すべて間違ったコミュニケーションこのようになっている現在、私が使っているASP.NET MVCバックエンドによる方法):
使ってい jQuery.ajax
投稿データにアクション、荷重をうまコンパイルしようとしたところにします。では基本的に提供する一部のデータにアクションは、一部のHTMLです。
ということかを創りたかった、Ajaxの通話ることが検証されます。どうやっていけばいいですか?に検証エラーメッセージ?例えば、Ajaxログインです。ユーザが検証できませんので、そういったでしょう...るだけでなくやっています。
さん、ナイーブ、んかっ右のソリューションです。
"と彼は話します。
解決
まず、あなたはAJAX呼び出しは、あなたのスクリプトで使用することを計画している(して使用することにより、私はdiv
でそのデータを表示し、その後、より複雑な何かを意味)データを返したい場合、あなたはおそらくJSONデータを返す代わりにHTMLすべきですサーバーから。 JSONは、実際にはJSでそれが受信される瞬間を使用することができるように、JSのオブジェクトである。
あなたはデータすなわちを返すので、もします。
{id: 1, status: 'ok'}
あなたは、そのデータを使用するには、このようなものを使用することができます。
$.ajax({
url: "your/script/url",
type: "POST",
data: {login : 'foo', pass: 'bar'}, // whatever the data is
dataType: "json",
success: function(data){
if (data.status === 'ok') {
console.log('success');
} else {
console.log('error');
}
}
});
他のヒント
する必要がありま戻り、複数の情報に応じます。幸い、で行うことができます簡単にJSONを使う場合は、jQuery自動的に対応でき、とてもおいしく頂けました。かでの対応タイプはjson.のオブジェクトにあるこのおajaxコールバック関数が含まれるすべての必要なデータとしての性格が異なります。
いるのは癖に復してステータスコードは"成功"または"失敗"とはajax、コレクションはエラーが発生します。 この国連環境計画(unep 詳したいとおもいます
デジタル化できなかった理由はそのajax通話は常に基本的に"成功"いない場合はサーバ実なリクエストを処理すと、返される不レスポンスのhttpステータスコードです。た場合の結果を要求さんは、このバリデーションエラーがサーバーのものを返します何らかのテキスト対応、そしてajaxの通話は依然として成功したものの、アプリケーションの操作に失敗しました。
なので、アクションメソッドではなく、帰国htmlデータアクションの結果、ご返されたオブジェクトのようになります:
public class AjaxResponse
{
/// <summary>
/// Initializes a new instance of the <see cref="AjaxResponse"/> class.
/// This creates an AjaxResponse that by default indicates SUCCESS.
/// </summary>
public AjaxResponse()
{
Success = true;
Data = new List<object>();
}
/// <summary>
/// Initializes a new instance of the <see cref="AjaxResponse"/> class.
/// This creates an AjaxResponse that indicates FAILURE.
/// </summary>
/// <param name="exception">The exception.</param>
public AjaxResponse(Exception exception)
: this()
{
Success = false;
Errors = new [] { exception.Message };
}
/// <summary>
/// Initializes a new instance of the <see cref="AjaxResponse"/> class.
/// This creates an AjaxResponse that indicates SUCCESS.
/// </summary>
/// <param name="data">The data.</param>
public AjaxResponse(object data)
: this()
{
Data = data;
}
/// <summary>
/// Gets or sets a value indicating whether this <see cref="AjaxResponse"/> is success.
/// </summary>
/// <value><c>true</c> if success; otherwise, <c>false</c>.</value>
public bool Success
{
get; set;
}
/// <summary>
/// Gets or sets the data.
/// </summary>
/// <value>The data.</value>
public object Data
{
get; set;
}
/// <summary>
/// Gets or sets the errors.
/// </summary>
/// <value>The errors.</value>
public string[] Errors
{
get; set;
}
}
このままでは、javascriptオブジェクトproperties"があります。成功",".データ"や".誤差".
シンプルな検証コードが人口の誤配列のすべての誤差の検証であるというおajaxコールバック機能
が定める利用目的の呼び出しのために成功したセットに"失敗".
得 すべての に関連するエラーの文字列です。
なにができることで簡単にこのようなパターンのアクション方法:
try
{
instance.Validate();
return Json(new AjaxResponse(myHtmlData));
}
catch(Exception ex)
{
var response = new AjaxResponse(ex);
// Get your validation errors here, put them into
// your ajax response's Errors property.
return Json(response);
}
私はは、これと同じような状況についてブログしました。。多分それは同様にあなたの状況のお手伝いをします。これは、カスタム例外クラスとエラーが返されます例外action属性を持っていることについて、基本的です。だから、success
コールのerror
と$.ajax
オプションを使用することができます。これは私の意見では、それを行うための正しい方法です。
$.ajax
コールは、成功だけでなく、エラー応答を処理するための機能を提供します。いつもあなたがクライアント上でチェックする必要があり、エラーフラグを設定して成功を返す必要がありません。
るか、というと分からないと思いまったくわか?も例の検証のメッセージのエラーになる仕事は次のように:
- ユーザがボタンにリンクをどの原因となるアクション
- るasynchronouseポストを行い、サーバー、送信、ユーザidを認識しておく必要があり安全こちら)
- サーバに必要な検証を行い、回答を送り返す("XML、Json、直接メッセージとして符号化されたHTML)
- のクライアント側での対応にJavaScriptコードまざまな取り組みが認められ、適切にそのページ
い役立っています。