0

After click a link, will trigger ajax require to /material/materialPrintajax, which will return JSON format data, and the returned JSON data has been verified through http://jsonlint.com/, the website tell me my return JSON is valid. But as I come across, console.log(jsonResult); always return null in firebug console.

Former solution in stackoverflow does not solve this, as I have refered:

http://stackoverflow.com/questions/6465468/why-parsejson-returns-null
http://stackoverflow.com/questions/8575479/parsing-json-string-returns-null

and so on..

Here are my codes:

$.ajax({
    url : $.att.config.BASE_URL + "/material/materialPrintajax",
    type : "POST",
    dataType : "json",
    data:   {
        "choosenCourse" : choosenCourse,
        "choosenDate" : choosenDate,
        "choosenElCode" : choosenElCode
    },
    //read json result & display print data in HTML 
    success : function(re){
        console.log('good!!',re);
        jsonResult = jQuery.parseJSON(re);
        console.log(jsonResult);
    },
    error :function(re) {
        //eg. if return data is not json format
        console.log('error!!',re);
    }

});

in case you need, here is my returned JSON (re):

{"COOKING":{"A":{"0":{"CLASS_MENU_SYMBOL":"A","STAFF_ID":"3010120001","LAST_NAME_KANJI":"\u6817\u7530","FIRST_NAME_KANJI":"\u6607","STAFF_START_TIME":"09:00","STAFF_END_TIME":"10:00","COURSE_ID":"0","COURSE_NAME_JP":"\u6599\u7406","RESERVE_COUNT":1},"RESERVE_TOTAL":3,"1":{"CLASS_MENU_SYMBOL":"A","STAFF_ID":"3010120012","LAST_NAME_KANJI":"\u9648","FIRST_NAME_KANJI":"\u6167\u5a77","STAFF_START_TIME":"21:00","STAFF_END_TIME":"22:00","COURSE_ID":"0","COURSE_NAME_JP":"\u6599\u7406","RESERVE_COUNT":2}},"B":{"0":{"CLASS_MENU_SYMBOL":"B","STAFF_ID":"3010120001","LAST_NAME_KANJI":"\u6817\u7530","FIRST_NAME_KANJI":"\u6607","STAFF_START_TIME":"13:00","STAFF_END_TIME":"14:00","COURSE_ID":"0","COURSE_NAME_JP":"\u6599\u7406","RESERVE_COUNT":1},"RESERVE_TOTAL":1}},"BREAD":{"B7":{"0":{"CLASS_MENU_SYMBOL":"B7","STAFF_ID":"3010120010","LAST_NAME_KANJI":"\u738b","FIRST_NAME_KANJI":"\u5a77","STAFF_START_TIME":"15:00","STAFF_END_TIME":"17:00","COURSE_ID":"1","COURSE_NAME_JP":"\u9762\u5305","RESERVE_COUNT":1},"RESERVE_TOTAL":1},"B1":{"0":{"CLASS_MENU_SYMBOL":"B1","STAFF_ID":"3010120010","LAST_NAME_KANJI":"\u738b","FIRST_NAME_KANJI":"\u5a77","STAFF_START_TIME":"15:00","STAFF_END_TIME":"17:00","COURSE_ID":"1","COURSE_NAME_JP":"\u9762\u5305","RESERVE_COUNT":1},"RESERVE_TOTAL":1}},"CAKE":{"12":{"0":{"CLASS_MENU_SYMBOL":"12","STAFF_ID":"3010120012","LAST_NAME_KANJI":"\u9648","FIRST_NAME_KANJI":"\u6167\u5a77","STAFF_START_TIME":"09:00","STAFF_END_TIME":"11:00","COURSE_ID":"2","COURSE_NAME_JP":"\u86cb\u7cd5","RESERVE_COUNT":2},"RESERVE_TOTAL":2}}}

3 Answers 3

4

The jQuery.parseJSON expects a JSON string as argument. What you are passing is not a string. It's already an object. jQuery automatically parses the JSON string returned by the server into a javascript object which is what is passed to the success method. You don't need to call parseJSON once again. You could directly use the object.

success : function(re){
    console.log(re.COOKING.A);
},
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you! That explains so lot!
2

jQuery automatically tries to parse the returned data when doing a AJAX call.

This means, you're actually trying to parse an already parsed object.

The solution is to simply not try to parse it and use it directly.

See also

Comments

1

just change dataType to false

$.ajax({
url : $.att.config.BASE_URL + "/material/materialPrintajax",
type : "POST",
dataType : false,
data:   {
    "choosenCourse" : choosenCourse,
    "choosenDate" : choosenDate,
    "choosenElCode" : choosenElCode
},
//read json result & display print data in HTML 
success : function(re){
    console.log('good!!',re);
    jsonResult = jQuery.parseJSON(re);
    console.log(jsonResult);
},
error :function(re) {
    //eg. if return data is not json format
    console.log('error!!',re);
}

});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.