简体   繁体   中英

In IE8, $.parseJSON is returning undefined

This is the strangest bug I've encountered.

I submit an ajax POST that would retrieve some data.

$.ajax({
   url: url,
   data: data,
   type: 'POST',
   success: function(data){
       console.log(data)
   },
   dataType: 'json',
   contentType: 'application/json; charset=utf-8'
}
)

In other version of IE and Chrome, the code would work fine and give the value of data which is {"success": true} .

But in IE8, data would return undefined . However, if I do JSON.stringify(data) , it would return {"success":true} .

I tried to convert the returned string to object via $.parseJSON(JSON.stringify(data) but it returned undefined again.

What can I do to get the response data as an object like I would normally in other browser?

EDIT:!! Found the solution. Apparently, the IE8 emulation of IE11 is a total crap and cannot display data correctly. Using IE8 on a virtual machine would correctly display the data and I figured out why it was undefined. Thanks for the help!

Found the solution! Apparently, the IE8 emulation of IE11 is a total crap and cannot display data correctly. Using IE8 on a virtual machine would correctly display the data and I figured out why it was undefined. Thanks for the help!

I'm not sure that you need to do that in IE8. Here is some code that I use with success in IE8 on a website that is live that is using jQuery 1.10.2:

$.ajax({
    type: "POST",
    crossDomain: true,
    url: 'http://example.com/service/url',
    data: params,
    dataType: 'json',
    timeout: 10000
})
.done(function( data ) {
    console.log("Success");
    console.log(data.success);
}) 
.fail(function( data ) {
    console.log("Rejected");
    console.log(JSON.stringify(data));
});

Hopefully this example is helpful for you to see how to handle the jQuery callback. The object that comes back is already an object if the result is actually valid JSON.


Updated this to be more generic of an answer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM