[解決済み] Ajaxリクエストが200 OKを返すが、successではなくerrorイベントが発生する
質問内容
私のウェブサイトにAjaxリクエストを実装し、ウェブページからエンドポイントを呼び出しています。それは常に
200 OK
しかし
jQuery
はエラーイベントを実行します。
いろいろと試してみたのですが、問題が分かりませんでした。以下に私のコードを追加します。
jQueryコード
var row = "1";
var json = "{'TwitterId':'" + row + "'}";
$.ajax({
type: 'POST',
url: 'Jqueryoperation.aspx?Operation=DeleteRow',
contentType: 'application/json; charset=utf-8',
data: json,
dataType: 'json',
cache: false,
success: AjaxSucceeded,
error: AjaxFailed
});
function AjaxSucceeded(result) {
alert("hello");
alert(result.d);
}
function AjaxFailed(result) {
alert("hello1");
alert(result.status + ' ' + result.statusText);
}
のC#コード
JqueryOpeartion.aspx
protected void Page_Load(object sender, EventArgs e) {
test();
}
private void test() {
Response.Write("<script language='javascript'>alert('Record Deleted');</script>");
}
を必要とします。
("Record deleted")
文字列を削除します。コンテンツを削除することはできますが、このメッセージが表示されません。これは正しいのでしょうか、それとも何か間違ったことをしているのでしょうか?この問題を解決する正しい方法は何でしょうか?
解決方法を教えてください。
jQuery.ajax
は、レスポンスボディを指定された
dataType
パラメータ、または
Content-Type
ヘッダを送信します。変換に失敗した場合(JSON/XMLが無効な場合など)、エラーコールバックが起動されます。
あなたのAJAXコードには
dataType: "json"
この場合、jQueryです。
レスポンスをJSONとして評価し、JavaScriptオブジェクトを返します。[...] JSONデータは厳密な方法でパースされます。 は拒否され、パースエラーが投げられる。[中略)空のレスポンスもまた サーバは代わりにnullまたは{}の応答を返す必要があります。
サーバーサイドのコードは、HTML スニペットを
200 OK
jQuery は有効な JSON を期待していたため、以下のようなエラー コールバックを発生させました。
parseerror
.
を削除することで解決します。
dataType
パラメータをjQueryのコードから取り除き、サーバー側のコードを返すようにします。
Content-Type: application/javascript
alert("Record Deleted");
しかし、私はむしろ、JSONレスポンスを返して、成功コールバックの中にメッセージを表示することを提案します。
Content-Type: application/json
{"message": "Record deleted"}
関連
-
Vue+ElementUIによる大規模なフォームの処理例
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
vue ディレクティブ v-html と v-text
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
vueにおけるfilterの適用シーンについて解説します。
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
[解決済み】Ajaxの成功イベントが動作しない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
Vue+ElementUIによる大規模なフォームの処理例
-
JavaScriptの配列共通メソッド解説
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された