2016-12-16 1 views
0

Okey, 2 개의 JSON 파일에서 데이터를 얻었습니다. 그 중 하나를 가져 와서 다른 데이터로 나누고 싶습니다. 어떻게 할 수 있습니까? 나는 'sugString'과 'htmlString'을 나누고 싶다. 그리고 내가 그 일을 한 후에 나는 이미 그것들 각각을 다뤘던 것처럼 다른 이드에 그것을 삽입하고 싶습니다.어떻게 함수 내에서 변수에 액세스 할 수 있습니까?

var flamingSkull = document.getElementById("flaming-skull"); 
var flamingSkullq = document.getElementById("flaming-skullq"); 
var flamingSkullSug = document.getElementById("flaming-skullsug"); 

    var ourRequest = new XMLHttpRequest(); 
    ourRequest.open('GET', 'https://api.opskins.com/IPricing/GetAllLowestListPrices/v1/?appid=433850'); 
    ourRequest.onload = function() { 
     var ourData = JSON.parse(ourRequest.responseText); 
     renderFlamingSkull(ourData); 
}; 

    ourRequest.send(); 


var ourRequest2 = new XMLHttpRequest(); 
    ourRequest2.open('GET', 'https://api.opskins.com/IPricing/GetPriceList/v1/?appid=433850'); 
    ourRequest2.onload = function() { 
    var ourData2 = JSON.parse(ourRequest2.responseText); 
    renderFlamingSkullSug(ourData2); 
}; 

    ourRequest2.send(); 



function renderFlamingSkullSug(data) { 

    var sugString = data.response[ 'Skin: Flaming Skull Face Bandana' ][today].price/100; 

    flamingSkullSug.insertAdjacentHTML('beforeend', "$" + sugString); 
} 

function renderFlamingSkull(data) { 

    var htmlString = data.response[ 'Skin: Flaming Skull Face Bandana' ].price/100; 
    var quantityString = data.response[ 'Skin: Flaming Skull Face Bandana' ].quantity; 


    flamingSkull.insertAdjacentHTML('afterbegin', "$" + htmlString); 
    flamingSkullq.insertAdjacentHTML('beforeend', "<p>(" + quantityString + ")</p>"); 
} 
+0

를? – IMTheNachoMan

+0

나는 그것의 가치를 얻고 내 페이지에 텍스트로 넣고 싶다 :) –

+0

어디에서 코드를 원하니? 당신은 두 사람을 나누기를 원하는 두 개의 아약스 전화를합니다. – IMTheNachoMan

답변

0

하나의 해결책은 요청 함수를 만들고 콜백을 사용하는 것입니다. 따라서 두 요청을 연결하여 두 응답에 모두 액세스 할 수 있습니다.

var flamingSkull = document.getElementById("flaming-skull"); 
 
var flamingSkullq = document.getElementById("flaming-skullq"); 
 
var flamingSkullSug = document.getElementById("flaming-skullsug"); 
 
var lowestPriceUrl = 'https://api.opskins.com/IPricing/GetAllLowestListPrices/v1/?appid=433850'; 
 
var priceListUrl = 'https://api.opskins.com/IPricing/GetPriceList/v1/?appid=433850'; 
 

 
function makeRequest (method, url, done) { 
 
    var xhr = new XMLHttpRequest(); 
 
    xhr.open(method, url); 
 
    xhr.onload = function() { 
 
    done(null, JSON.parse(xhr.responseText)); 
 
    }; 
 
    xhr.onerror = function() { 
 
    done(JSON.parse(xhr.responseText)); 
 
    }; 
 
    xhr.send(); 
 
} 
 

 

 
makeRequest('GET', lowestPriceUrl, function (err, res) { 
 
    if (err) { throw err; } 
 
    
 
    makeRequest('GET', priceListUrl, function (err, res2) { 
 
    if (err) { throw err; } 
 
    
 
    var sugString = res[ 'Skin: Flaming Skull Face Bandana' ][today].price/100; 
 
    var htmlString = res2[ 'Skin: Flaming Skull Face Bandana' ].price/100; 
 
    var quantityString = res2[ 'Skin: Flaming Skull Face Bandana' ].quantity; 
 
    
 
    flamingSkullSug.insertAdjacentHTML('beforeend', "$" + sugString); 
 
    flamingSkull.insertAdjacentHTML('afterbegin', "$" + htmlString); 
 
    flamingSkullq.insertAdjacentHTML('beforeend', "<p>(" + quantityString + ")</p>"); 
 

 
    // Complete division 
 
    // ================== 
 
    // var division = Math.round(sugString/htmlString) 
 
    }); 
 
});

참고로 또 다른 질문 사용 : 당신이 그것을 나눌 할 How do I promisify native XHR?

+0

나는이 메시지를 얻었다.이 속성을 읽을 수 없다. 정의되지 않은 main.js에서 'Skin : Flaming Skull Face Bandana': 41 –

+0

왜 그런지 알고 있니? @ zlwaterfield –

+0

@MathiasHermansen 나는 당신의 예제 코드와 같은 응답을 파싱하지 않았기 때문에 그것이 내기했다. 내 대답이 업데이트되었습니다. 지금 시도하십시오. – zlwaterfield

관련 문제