0

我有以下代码用于连接到供应商。运行时,我返回状态码 0。使用 Wireshark 进行评估时,我发现请求失败,原因如下:

错误:传入消息具有意外的消息格式“原始”。该操作的预期消息格式为“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

尝试设置您的内容类型。

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

我还会确保您发送有效的 json 数据 ( jsonlint.com )。

于 2012-04-10T15:01:20.680 回答
0

您的服务器应该返回 JSON 格式的输出

如果您使用的是 spring 框架,那么您可以在返回类型之前将方法注释为

@ResponseBody

所以那个spring会将它作为JSON格式返回。

但是,如果您使用任何其他框架。请使用 json jar 文件并尝试构造 JSON 输出格式并返回相同。只有这样您的 ajax 模块才能读取和处理

于 2012-04-11T05:37:50.580 回答