2014-07-22 4 views
0

저는 nutritionx.com public APIS를 사용하는 웹 애플리케이션을 작성하려는 신참 개발자입니다. 나는 '체다 치즈'내가 POST를 사용하려고하면POST 요청을 사용하여 json 객체 보내기 AJAX

<script> 
function loadXMLDoc() 
{ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
    { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      var responseTxt = xmlhttp.responseText; 
      var obj = JSON.parse(responseTxt); 
      document.getElementById("myDiv").innerHTML=obj.hits[0].fields.nf_total_fat; 
     } 
    } 

    xmlhttp.open("GET","https://api.nutritionix.com/v1_1/search/cheddar%20cheese? fields=item_name%2Citem_id%2Cbrand_name%2Cnf_calories%2Cnf_total_fat&appId=XYZ&appKey=XYZ",true); 
    xmlhttp.send(); // works! 
</script> 

, 그것은 (I 보내는 매개 변수에 대한 내 요청 형식이 잘못되었다고 의심)이 작동하지 않습니다

의 지방 함량을 가져 오기 위해 자바 스크립트의 다음 조각이
// What I tried: 
    // xmlhttp.open("POST","https://api.nutritionix.com/v1_1/search",true); 
    // xmlhttp.setRequestHeader("Content-type","application/json"); 
    // xmlhttp.send("{"appId":"XYZ", "appKey":"XYZ","query":"Cheddar Cheese"}"); 

Json 객체를 Javascript에서 POST를 사용하여 요청하는 서버로 올바르게 보내는 방법은 무엇입니까? API 문서는 다음 샘플을 제공합니다 :

컬 또는 PHP를 사용하거나 javascript로 충분합니까? 이상적으로 내가 시도한 것의 라인을 따라 뭔가를 원한다.

echo $_POST['appId'] ; // shows XYZ 
echo $_POST['appKey'] ; // shows XYZ 
echo $_POST['query'] ; // shows Cheddar Cheese 

경우 : 읽기 :

+1

첫 번째 및 마지막 큰 따옴표를 작은 따옴표로 바꾸어보십시오. –

+1

프로세스를 단순화하기 위해 jQuery 사용을 고려 했습니까? jQuery는 매우 간단하다.'$ .post ("ajax/test.html", function (data) {$ (".result") .html (data);});'(예제는 jQuery 문서에서 가져온 것이다. – FlyingColours

답변

0

당신이 POST를 통해 데이터를 보낼 필요 주셔서 감사합니다, 당신은 당신이이 같은 데이터를 얻을 것이다 PHP에서이

xmlhttp.send("appId=XYZ&appKey=XYZ&query=Cheddar Cheese"); 

같은 데이터를 설정해야 당신은 json으로 데이터를 보내야합니다. 단지 이것을 할 필요가 있습니다.

xmlhttp.send('data={"appId":"XYZ", "appKey":"XYZ","query":"Cheddar Cheese"}'); 

당신의 PHP 파일에 다음과 같은 결과가 나타납니다. 이

$Data = json_decode($_SESSION['data']); 
echo $Data->appId; // shows XYZ 
echo $Data->appKey; // shows XYZ 
echo $Data->query; // shows Cheddar Cheese 
+0

패트 릭의 제안으로 해결되었습니다. 내가해야만하는 것은 "with" –

1

HTTP API 요청이므로 직접 호출 할 수 있습니다. $.getJSON 방법은 Jquery입니다. 이것은 나를 위해 일했습니다.

$.getJSON("https://api.nutritionix.com/v1_1/search/Macdonald's?results=0%3A20&cal_min=0&cal_max=50000&appId=2629576d&appKey=YOUR_API_KEY_HERE", function(data2) 
{ 
    alert(data2.total_hits); 
}).fail(function(jqXHR, status, error) 
{ 
alert("error...!"); 
}); 
관련 문제