0

以下は、あるページのコード フラグメントです。

$("#add_new").button().click(function (ui,event) {
    var postdata = {
        "action":"new",
        field_kind_id:2,
        collection_id:null,
        parent_id:null,
        app_struct_id:null,
        member_id:1033,
        app_id:1003,
    };
    $.ajax({
        url: "?",
        type: "POST",
        data: postdata,
        error: function(jqXHR, textStatus, errorThrown) {
            $().toastmessage("showErrorToast",
                "AJAX call failed: "+textStatus+" "+errorThrown);
        },
        success: function(data) {
            edit_record(data);
            return false;
        }
    });
});

実際、POST されたデータは次のようなものです。

action  new
app_id  1003
app_struct_id   null
collection_id   null
field_kind_id   2
member_id   1033
parent_id   null

応答は次の文字列です。

{\x22app_id\x22:1003,\x22member_id\x22:1033,\x22collection_id\x22:\x22-6885\x22,\x22field_kind_id\x22:2,\x22sample_id\x22:\x22\x22,\x22parent_id\x22:\x22\x22}

応答は有効な json データではありません。特別なフォーマットがあります。私の問題は、上記の ajax 呼び出しで次のトースト メッセージが表示されることです。

「AJAX 呼び出しに失敗しました: パーサー エラー SyntaxError: 不正な文字」

そのため、AJAX 呼び出しが失敗したようです。しかし、何が構文をチェックしているのかわかりませんか?どのような構文ですか?JQuery Ajax 呼び出しに「dataType:json」が指定されていませんでした。したがって、チェックする構文はありません。私は何が欠けていますか?

JQueryのドキュメントによると、「dataType」のデフォルト値は「インテリジェント」です

「Intelligent Guess (xml、json、script、または html)」

応答が JSON 値として解釈できない場合、それは JSON 値ではありませんよね? それは有効な JSON 値ではない (その場合、変換されるべきではない) か、そうである (ただし、例外をスローすべきではない) かのどちらかです。

4

2 に答える 2

2

jQuery が応答のコンテンツ タイプを推測する必要がないように、明示的にdataTypeto を設定することをお勧めします"text"( jQuery.ajaxを参照)。

$.ajax({
    url: "?",
    type: "POST",
    data: postdata,
    dataType: "text", // the type of data that you're expecting back from the server
    error: function(jqXHR, textStatus, errorThrown) {
        $().toastmessage("showErrorToast",
            "AJAX call failed: "+textStatus+" "+errorThrown);
    },
    success: function(data) {
        edit_record(data);
        return false;
    }
});

発生したエラーの理由は、おそらく次のとおりです。jQuery は、サーバーの応答が JSON 形式であると想定し、それを解析しようとします。

于 2012-07-16T12:17:28.860 に答える
1

サーバーからの応答の Content-Type ヘッダーの値は? コンテンツの形式に関して実行される推測は、それに基づいていると思います。

于 2012-07-16T11:47:16.797 に答える