2012-04-10 4 views
0

Ich habe den folgenden Code, den ich verwende, um eine Verbindung zu einem Anbieter herzustellen. Wenn ausgeführt, erhalte ich einen Statuscode 0. Bei der Auswertung mit Wireshark stelle ich fest, dass die Anforderung aufgrund folgender Fehler fehlschlägt:

Fehler: Die eingehende Nachricht hat ein unerwartetes Nachrichtenformat 'Raw'. Die erwarteten Nachrichtenformate für die Operation sind 'Xml', 'Json'.

Ich sah in der Dokumentation, dass die Einstellung dataType nur die eingehenden Daten definiert. Wie stelle ich die Ausgabe als JSON ein?

(bitte grobe Kodierung entschuldigen, ist dies nur eine Schale im Moment)

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); 
       }      
      }, 
     }); 
+1

lesen und verarbeiten. Damit die Ausgabe JSON ist, müssten Sie JSON an den Server senden. Im Moment senden Sie stattdessen form params an den Server. –

Antwort

0

Versuchen Sie Ihre Inhalte Typ eingestellt werden.

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

Ich würde auch sicherstellen, dass Sie gültige JSON-Daten (jsonlint.com) senden.

0

Sie Server sollte Rückkehr JSON formatierte Ausgabe

Wenn Sie Spring Framework verwenden, dann können Sie das Verfahren vor dem Rückgabetyp als

@ResponseBody 

annotieren So, dass der Frühling als JSON-Format zurück .

Aber wenn Sie ein anderes Framework verwenden. Bitte verwenden Sie JSON JAR-Dateien und versuchen Sie, das JSON-Ausgabeformat zu erstellen, und geben Sie dasselbe zurück. Nur dann könnte Ihr Ajax-Modul