0

次のように、アクションメソッドにJSONデータを投稿しています。

$.ajax({
        url: this.options.url,
        type: 'POST',
        dataType: 'json',
        data: values,
        success: function (html, status, response) {
            // do whatever
        },
        error: function (error) {
            // do whatever
        }
    })

正しい値が存在する状態でサーバーに正常にアクセスしていますが、エラーはスローされていませんが、エラーイベントは成功イベントではなく、完了に到達しています。エラーイベントの応答オブジェクトを調べると、200'OK'が返されていることがわかります。また、応答テキストが私が期待するものであることがわかります。

これは、JSONを投稿しているが、テキストを返しているためだと思いますか?方向ごとに異なるdataTypeを持つことは可能ですか?

4

5 に答える 5

5

このdataTypeプロパティは、送信するデータのタイプではなく、呼び出しに応答して期待するデータのタイプを示すために使用されます。したがって、呼び出しはJSON応答を期待しますが、代わりにプレーンテキストを取得します。

于 2012-04-23T13:54:50.630 に答える
3

指定するデータ型は応答型用です。に変更するだけで機能しtextます。

jQueryがテキスト応答をJSONとして解析しようとし、問題が発生するため、エラーが発生します。

$.ajax({
        url: this.options.url,
        type: 'POST',
        dataType: 'text',
        data: values,
        success: function (html, status, response) {
            // do whatever
        },
        error: function (error) {
            // do whatever
        }
})
于 2012-04-23T13:55:38.607 に答える
1

簡単な答えはもちろんそうです。

http://api.jquery.com/jQuery.ajax/経由dataTypeは参照します

サーバーから返されると予想されるデータのタイプ。

あなたが送っているものではありません。一方、JSONを送信している場合は、実際にはテキスト(JSONコンテンツを含むテキスト)を送信しているだけです。

したがって、テキストを返すようにdataTypeを変更するだけで、ゴールデンになる可能性があります。

于 2012-04-23T13:56:21.190 に答える
0

dataType属性を確認してください。jQueryはJSON応答を期待しています。ドキュメントから:

"json":応答をJSONとして評価し、JavaScriptオブジェクトを返します。jQuery 1.4では、JSONデータは厳密な方法で解析されます。不正な形式のJSONはすべて拒否され、解析エラーがスローされます。(適切なJSONフォーマットの詳細については、json.orgを参照してください。)

于 2012-04-23T13:56:31.600 に答える
0

あなたはテキスト形式としてデータを期待しています。

$.ajax({
        url: this.options.url,
        type: 'POST',
        dataType: 'text', // instead of json
        data: values,
        success: function (html, status, response) {
            // do whatever
        },
        error: function (error) {
            // do whatever
        }
    })
于 2012-04-23T13:57:41.803 に答える