0

処理する 2 つの応答ヘッダーを取得できます。最後に見てください。

問題:

JSON応答を取得しpostValidationた場合は、JSONを処理する関数を実行する必要がありますが、htmlの場合は実行しません。html タグをチェックして実行を停止することで回避できますが、返された応答が有効な JSON であることを確認し、AJAX 呼び出しで関数の実行を停止するためのクリーンなアプローチを探しています。

getValidationErrorsは常に NULL を返します。理由がわからない。何が悪いのか教えてください。

 $.ajax({
                        url: url,
                        type: 'POST',
                        data: viewData,
                        //dataType: "json",
                        cache: false,
                        complete: postValidation,
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            console.log("error :"+XMLHttpRequest.responseText);
                        }
                       /* ,
                        success: function (data) {
                            $("#status").html('name = ' + data.name + ', age = ' + data.age);
                        }*/
                    });

function postValidation(request) {
                clearValidationErrors();

                var text = request.responseText;
                var errorsObject = getValidationErrors(text);

                //var errorsObject = JSON.parse(request.responseText);
            };


var getValidationErrors = function(data) {
                if (typeof data === "object") {
                    alert("1");
                    return data;
                }
                else {
                    if (data.indexOf("/* {") === 0) {
                        alert("2");
                        return eval("( " + data.substring(2, data.length - 2) + " )");
                    } else {
                        alert("3");
                        return null;
                    }
                }
            };

リクエスト 1: レスポンス ヘッダー

Content-Type    application/json;charset=UTF-8

{ "fieldErrors": {"name":["You must enter your name"],"age":["Only people ages 13 to 19 may take this quiz"]}}

リクエスト 2: レスポンス ヘッダー

Content-Type    text/html;charset=UTF-8

<html>
<head>
    <title></title>
</head>
<body>

</body>
</html>
4

0 に答える 0