2015-03-17 2 views
5

Ich stieß auf diese Frage auf Prüfung. Kann jemand damit helfen? In meinen Recherchen fand ich, dass dataType etwas wie "json" oder "xml" ist, nicht der genaue Mime-Typ. Akzeptiert in anderer Hand literales Objekt, um MIME-Typen zu definieren (nach this). Etwas wie:Ich habe Problem mit Ajax Anruf auf einer Prüfung

$.ajax({ 
    url: ... 
    dataType: 'json', 
    accepts: { 
     xml: 'text/xml', 
     text: 'text/plain' 
    } 
}); 

Und Inhaltstyp ist für

Wenn Daten an den Server senden, um diese Art Inhalt verwenden.

von jQuery-Dokumentation.

Wenn jemand mit dieser Frage helfen kann, wird groß sein. Vielen Dank.

Exam Frage:

Sie entwickeln eine Web-Anwendung, die Daten von einem Web- Dienst abruft. Bei den abgerufenen Daten handelt es sich um einen benutzerdefinierten Binärdatentyp namens bint. Die Daten können auch in XML dargestellt werden. Zwei vorhandene Methoden namens parseXml() und parseBint() sind auf der Seite definiert.

Die Anwendung muss:? Daten vom Web-Service abrufen und parsen, indem Sie das binäre Format verwenden, wenn möglich? Abrufen und analysieren Sie die Daten von der Web-Service mithilfe von XML, wenn Binärformat nicht möglich ist

Sie müssen die Anwendung entwickeln, um die Anforderungen zu erfüllen. Was sollten Sie tun, ? (Um zu antworten, ziehen Sie das entsprechende Code-Segment an die korrekte Position . Jedes Code-Segment kann einmal, mehr als einmal, oder gar nicht verwendet werden. Sie müssen möglicherweise die geteilte Leiste zwischen den Bereichen oder blättern, um Inhalt anzuzeigen.

)

Code:

var request = $.ajax({ 
    uri: '/', 

Option 1: accepts: 'application/bint, text/xml',

Option 2: contentType: 'application/bint, text/xml'

Option: dataType: 'application/bint, text/xml'

dataFilter: function(data, type) { 

Option 1: if(request.getResponseHeader("Content-Type" == 'application/bint')

Option 2: if(type == 'application/bint')

Option 3: if(request.mimeType == 'application/bint')

}, 
    success: function(data) { 
     start(data); 
    } 
}); 
+0

Gemessen an der jQuery-Dokumentation kann nicht Datentyp. "Die verfügbaren Datentypen sind text, html, xml, json, jsonp und script." –

+4

Meine Annahme ist, dass akzeptiert (Option 1) und getResponseHeader (Option 1) ist die richtige Antwort, nur eine Vermutung. Dies ist der Grund zu fragen. –

Antwort

2

Ich denke, der Schlüssel hier ist dieser Bit:

Die Daten, die abgerufen werden, sind ein benutzerdefinierter Binärdatentyp namens bint.

Dies bedeutet, dass Sie bint erwarten, nicht senden bint. Daher ist die Antwort hier accepts.

Für den zweiten Teil:

  1. type ist kein MIME-Typ, es ist eine Zeichenfolge (Quelle here)
  2. request.mimeType ist keine gültige Eigenschaft von XmlHttpRequest (Quelle here)

Daher ist die Antwort request.getResponseHeader("Content-Type") == 'application/bint' (Quelle here)

-1

Option 1: accepts: 'application/bint, text/xml', weil es ein bint oder xml Typ

Option 2 erwartet wird: if(type == 'application/bint')

es ist wie unten

dataType: xpto, 
dataFilter: function(data, type){ 
    alert(type); //xpto 
}