मैं जेएस के लिए अपेक्षाकृत नया हूँ। मैं शुद्ध जावास्क्रिप्ट का उपयोग कर बाहरी यूआरएल से जेसन को पार्स करने में सक्षम होना चाहता हूं। इस समय मैं उपयोग कर रहा हूँ

var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
  var status = xhr.status;
  if (status === 200) {
    callback(null, xhr.response);
  } else {
    callback(status, xhr.response);
  }
};
xhr.send();
 };

 function statsget() {
 var uname = document.getElementById("nameget").value;
 var data = getJSON(`https://www.reddit.com/user/${uname}/circle.json`);
 var stats = JSON.parse(data);
 alert(data.is_betrayed);
 }

हालांकि यह काम नहीं कर रहा है। क्या कोई इसमें मेरी सहायता कर सकता है? धन्यवाद!

2
Tech Hax 3 अप्रैल 2018, 08:44

4 जवाब

सबसे बढ़िया उत्तर

सबसे पहले आप getJSON को दूसरे पैरामीटर के रूप में कॉलबैक फ़ंक्शन पास करना भूल गए, जिसे तब कहा जाता है जब आपका xhr डेटा के साथ वापस आता है। दूसरा, जब आप सर्वर से JSON फ़ाइल के लिए पूछ रहे हों और JSON पर प्रतिक्रिया टाइप सेट कर रहे हों, तो आपको डेटा को json में पार्स करने की आवश्यकता नहीं है, यह स्वचालित रूप से आपके लिए किया जाएगा।

var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
  var status = xhr.status;
  if (status === 200) {
    callback(null, xhr.response);
  } else {
    callback(status, xhr.response);
  }
};
xhr.send();
 };


function yourCallBackFunction(err, data){
    if(err){
        //Do something with the error 
    }else{
        //data  is the json response that you recieved from the server
    }

}

 function statsget() {
 var uname = document.getElementById("nameget").value;
 var data = getJSON(`https://www.reddit.com/user/${uname}/circle.json`, yourCallBackFunction);

 }

अगर आपको इसके बारे में अधिक जानकारी चाहिए तो मुझे बताएं।

2
khawar jamil 3 अप्रैल 2018, 06:02

callback फ़ंक्शन का उपयोग नहीं करने के कारण यह आपके द्वारा अपेक्षित तरीके से काम नहीं कर रहा है (भले ही आपके पास यह आपके getJSON फ़ंक्शन में आपके द्वारा पारित पैरामीटर के रूप में है)

बात यह है - प्रतिक्रिया मिलने के बाद इस फ़ंक्शन को कॉल किया जाना चाहिए। चेक करने के लिए कुछ इस तरह जोड़ें

var processingData = function(status, data){
    console.log("my data is here:\n", data);
    if(status == null) { 
       return data;
    }
}

 function statsget() {
     var uname = document.getElementById("nameget").value;
     var data = getJSON(`https://www.reddit.com/user/${uname}/circle.json`, processingData);
     var stats = JSON.parse(data);
     alert(data.is_betrayed);
 }
0
DanilGholtsman 3 अप्रैल 2018, 05:56

आपकी statsget विधि में एक कॉलबैक फ़ंक्शन परिभाषित होना चाहिए। कुछ इस तरह।

function statsget() {
 var uname = document.getElementById("nameget").value;
 getJSON(`https://www.reddit.com/user/${uname}/circle.json`, 
    function(data) {
      var stats = JSON.parse(data);
      alert(data.is_betrayed);
    });
}
0
Nitheesh 3 अप्रैल 2018, 05:55

यदि आप शुद्ध जावास्क्रिप्ट का उपयोग करना चाहते हैं, तो अपना स्वयं का कार्य लिखे बिना ऐसा करने का एक अंतर्निहित तरीका पहले से ही है:

 function statsget() {
   var uname = 'CertainPerformance';
   fetch(`https://www.reddit.com/user/${uname}/circle.json`)
     .then(res => res.json())
     .then(resJSON => {
       // interact with resJSON here
       console.log(resJSON);
     });
 }
 statsget();

वादे कॉलबैक की तुलना में काम करने के लिए बहुत अच्छे हैं।

0
CertainPerformance 3 अप्रैल 2018, 05:55