0

ベンダーに接続するために使用している次のコードがあります。実行すると、ステータス コード 0 が返されます。Wireshark を使用して評価すると、次の理由でリクエストが失敗していることがわかります。

エラー: 受信メッセージに予期しないメッセージ形式 'Raw' があります。この操作で想定されるメッセージ形式は、'Xml'、'Json' です。

ドキュメントから、 dataType 設定が着信データのみを定義することがわかりました。出力を JSON として設定するにはどうすればよいですか?

(お粗末なコーディングをお許しください。これは現時点では単なるシェルです)

    var key         = "xxxxxx";
        $.ajax({
            type        : "POST",
            dataType    : "JSON", 
            url         : "http://url",
            data        : {
                            "CityName":cty,
                            "FirmOrRecipient":name,
                            "LicenseKey":key,
                            "PrimaryAddressLine":s1,
                            "SecondaryAddressLine":s2,
                            "State":st,
                            "ZipCode":zip
            },
            success     : function (data, status, xhr) {
                var pretty = JSON.stringify(data, null, 4).replace( / /g, '&nbsp;').replace( /\n/g, '<br />');
                $('div#results').html(pretty);
            },
            error       : function(jqXHR, textStatus, errorThrown){
                if (jqXHR.status === 0) {
                    alert('ERROR: \n Failed to connect to PAV.\n Verify Network.');
                } else if (jqXHR.status == 404) {
                    alert('ERROR: \n Requested page not found. [404]');
                } else if (jqXHR.status == 500) {
                    alert('ERROR: \n Internal Server Error [500].');
                } else if (exception === 'parsererror') {
                    alert('ERROR: \n Requested JSON parse failed.');
                } else if (exception === 'timeout') {
                    alert('ERROR: \n Time out error.');
                } else if (exception === 'abort') {
                    alert('ERROR: \n Ajax request aborted.');
                } else {
                    alert('ERROR: \n Uncaught Error.\n' + jqXHR.responseText);
                }                    
            },
        });
4

2 に答える 2

0

サーバーは JSON 形式の出力を返す必要があります

Spring フレームワークを使用している場合は、戻り値の型の前にメソッドに注釈を付けることができます。

@ResponseBody

そのため、Spring はそれを JSON 形式で返します。

ただし、他のフレームワークを使用している場合。json jar ファイルを使用して、JSON 出力形式を構築し、同じものを返すようにしてください。そうして初めて、ajaxモジュールは読み取りと処理が可能になります

于 2012-04-11T05:37:50.580 に答える
0

コンテンツ タイプを設定してみてください。

$.ajax({
        type        : "POST",
        dataType    : "JSON", 
        contentType: 'application/json',

また、有効な json データ ( jsonlint.com )を送信していることも確認します。

于 2012-04-10T15:01:20.680 に答える