aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ajax.js3
-rw-r--r--test/data/json.php6
-rw-r--r--test/unit/ajax.js19
3 files changed, 26 insertions, 2 deletions
diff --git a/src/ajax.js b/src/ajax.js
index 91519d289..6d4026b9d 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -557,6 +557,7 @@ jQuery.extend({
httpData: function( xhr, type, s ) {
var ct = xhr.getResponseHeader("content-type"),
xml = type === "xml" || !type && ct && ct.indexOf("xml") >= 0,
+ json = type === "json" || !type && ct && ct.indexOf("json") >= 0,
data = xml ? xhr.responseXML : xhr.responseText;
if ( xml && data.documentElement.nodeName === "parsererror" ) {
@@ -578,7 +579,7 @@ jQuery.extend({
}
// Get the JavaScript object, if JSON is used.
- if ( type === "json" ) {
+ if ( json ) {
// Try to use the native JSON parser first
try {
data = JSON.parse( data );
diff --git a/test/data/json.php b/test/data/json.php
index d19a41792..d6e0f2fc7 100644
--- a/test/data/json.php
+++ b/test/data/json.php
@@ -1,9 +1,13 @@
<?php
error_reporting(0);
+if ( $_REQUEST['header'] ) {
+ header("Content-type: application/json");
+}
+
$json = $_REQUEST['json'];
if($json) {
echo '[ {"name": "John", "age": 21}, {"name": "Peter", "age": 25 } ]';
} else {
echo '{ "data": {"lang": "en", "length": 25} }';
}
-?> \ No newline at end of file
+?>
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index f9f595ad6..b1cb486bd 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -797,6 +797,25 @@ test("jQuery.ajax() - script, Remote with scheme-less URL", function() {
});
});
+test("jQuery.ajax() - json by content-type", function() {
+ expect(5);
+
+ stop();
+
+ jQuery.ajax({
+ url: "data/json.php",
+ data: { header: "json", json: "array" },
+ success: function( json ) {
+ ok( json.length >= 2, "Check length");
+ equals( json[0].name, 'John', 'Check JSON: first, name' );
+ equals( json[0].age, 21, 'Check JSON: first, age' );
+ equals( json[1].name, 'Peter', 'Check JSON: second, name' );
+ equals( json[1].age, 25, 'Check JSON: second, age' );
+ start();
+ }
+ });
+});
+
test("jQuery.getJSON(String, Hash, Function) - JSON array", function() {
expect(5);
stop();