JSON を使用して HTML も返さないのはなぜですか?
私が通常行うことは、返された JSON オブジェクトを次のように設定することです。
{
//s=status, d=data
"s":0, //0 means success, other numbers are for different errors
"d":{ /* Other JSON object or string here */ }
}
したがって、あなたの場合、次のようなことをします(疑似):
if (StuffIsValid()) {
ResponseWrite('{"s":0,"d":"<html>html code here</html>"}');
} else {
ResponseWrite('{"s":1,"d":{"errlist":["err1","err2"]}}');
}
もちろん、文字列を使用する代わりに、選択したサーバー側の言語に組み込みの JSON ライブラリを使用することをお勧めします。
次に、jQuerysuccess
コールバックで、s の値をチェックします。
$.ajax({
url: 'url',
dataType: 'json',
success: function(data) {
if (data) {
//We have a JSON object
if (data.s === 0) {
//Success!
//Do stuff with data.d as a string
} else if (data.s === 1) {
//Failed validation
//Do stuff with data.d as an object
} else {
//How did this happen?
}
} else {
//Uh oh, no object, user must have been logged out (or something)
}
});
これは、返されたデータが JSON オブジェクトではないという事実を把握できるため、投稿先のページにアクセスするためにユーザーがログインする必要がある場合に特に便利です。