2013-06-05 6 views
17

मैं निम्नलिखित समारोह का उपयोग jQuery ajaxपार्स jQuery ajax प्रतिक्रिया

$('form#add_systemgoal .error').remove(); 
var formdata = $('form#add_systemgoal').serialize(); 
$.ajaxSetup({async: false}); 
$.ajax({  
    type: "POST", 
    url: '/admin/systemgoalssystemgoalupdate?format=html', 
    data: formdata, 
    success: function (data) { 
     console.log(data); 
    }, 
}); 

के माध्यम से करने के लिए एक फार्म पोस्ट करने के लिए यह ठीक पोस्ट लेकिन मैं प्रतिसाद देने पार्स नहीं कर सकता है, यह के रूप में

{"success":1,"inserted":{"goal_id":"67","goalsoptions_id":"0","user_id":"0","value":"dsfdsaf","created":"2013-06-05 09:57:38","modified":null,"due":"2013-06-17 00:00:00","status":"active","actions_total":"0","actions_title":"sfdgsfdgdf","action_type":"input","points_per_action":"1","expires":"2013-06-11 00:00:00","success":1}} 

इस प्रकार सांत्वना देने लॉग जो मुझे विश्वास है वह प्रतिक्रिया है जिसे मैं ढूंढ रहा हूं, हालांकि जब मैं सतर्क करने की कोशिश करता हूं (data.success); या प्रतिक्रिया ऑब्जेक्ट के अन्य सदस्यों में से कोई भी यह अनिर्धारित है।

किसी भी सलाह

+2

'डेटाप्रकार सूचित करेंगे है: 'json''। क्या आपने जानबूझकर 'प्रारूप = html' पैरामीटर रखा था? इसका क्या मतलब है? – zerkms

+1

यदि आपका AJAX Url JSON का जिक्र करते हुए एक सामग्री शीर्षलेख देता है, तो आपको $ .parseJSON (yourdata) की भी आवश्यकता नहीं है, क्योंकि jQuery स्वचालित रूप से डिफ़ॉल्ट रूप से ऐसा करेगा। मैं ऐसा करता हूं, और हर प्रतिक्रिया में मेरे पास एक कस्टम स्टेटस कोड भी होता है। इस तरह से आप आसानी से सत्यापित कर सकते हैं कि क्या हुआ था। –

उत्तर

13

सराहना

var parsed_data = JSON.parse(data); 

बुला की तरह आप चाहते हैं डेटा का उपयोग करने की क्षमता में परिणाम चाहिए।

console.log(parsed_data.success); 

अब दिखाना चाहिए '1'

+1

प्राप्त होने के बाद जेसन को पार्स न करें।अपने मूल अनुरोध में 'डेटा टाइप:' जेसन 'इंगित करें और आपको जेसन मिलेगा, टेक्स्ट नहीं। –

0

उपयोग parseJSONdoc

var obj = $.parseJSON(data); 

कुछ इस तरह देखो:

$.ajax({  
    type: "POST", 
    url: '/admin/systemgoalssystemgoalupdate?format=html', 
    data: formdata, 
    success: function (data) { 

     console.log($.parseJSON(data)); //will log Object 

    } 
}); 
+0

इस मुद्दे की जड़ों को ठीक करना समझ में आता है, न कि इसके परिणाम – zerkms

9
$.ajax({  
    type: "POST", 
    url: '/admin/systemgoalssystemgoalupdate?format=html', 
    data: formdata, 
    success: function (data) { 
     console.log(data); 
    }, 
    dataType: "json" 
}); 
1

जब से तुम $.ajax, और नहीं $.getJSON उपयोग कर रहे हैं, अपनी वापसी प्रकार सादा पाठ है। आपको अब एक JSON ऑब्जेक्ट में data रूपांतरित करने की आवश्यकता है।

आप को बदल कर ऐसा कर सकते हैं या तो अपने $.ajax$.getJSON (जो $.ajax के लिए एक आशुलिपि, केवल json लाने के लिए पहले से कॉन्फ़िगर है)।

या आप JSON में data स्ट्रिंग पार्स कर सकते हैं आप इसे प्राप्त है, इसलिए की तरह के बाद:

success: function (data) { 
     var obj = $.parseJSON(data); 
     console.log(obj); 
    }, 
3

आप JSON स्ट्रिंग पार्स चाहिए वस्तु

var dataObject = jQuery.parseJSON(data); 

तो बनने के लिए आप इसे पसंद कॉल कर सकते हैं:

success: function (data) { 
    var dataObject = jQuery.parseJSON(data); 
    if (dataObject.success == 1) { 
     var insertedGoalId = dataObject.inserted.goal_id; 
     ... 
     ... 
    } 
} 
5

कल्पना कीजिए कि यह आपकी जेसन प्रतिक्रिया

है
{"Visit":{"VisitId":8,"Description":"visit8"}} 

इस तरह आप प्रतिसाद पार्स और मूल्यों

Ext.Ajax.request({ 
    headers: { 
     'Content-Type': 'application/json' 
    }, 
    url: 'api/fullvisit/getfullvisit/' + visitId, 
    method: 'GET', 
    dataType: 'json', 
    success: function (response, request) { 
     obj = JSON.parse(response.responseText); 
     alert(obj.Visit.VisitId); 
    } 
}); 

का उपयोग इस visitId क्षेत्र

संबंधित मुद्दे