[英]Sending json object across using POST request AJAX
我是一個新手開發人員,試圖構建一個利用Nutritionx.com公共APIS的網絡應用程序。 我有以下一段Javascript可以提取“切達干酪”的脂肪含量
<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>
當我嘗試使用POST時,它不起作用(我懷疑我發送參數的請求格式不正確)
// 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"}");
如何使用Javascript中的POST將Json對象正確發送到請求它的服務器? API文檔提供了以下示例:
curl -XPOST https://api.nutritionix.com/v1_1/search -H 'Content-Type: application/json' -d'
{
"appId":"YOUR_API_ID",
"appKey":"YOUR_API_KEY",
"query":"Cookies `n Cream"
}'
是否有必要使用curl或php或javascript就足夠了? 理想情況下,我想要一些我嘗試過的東西。 謝謝閱讀 :)
由於這是HTTP API請求,因此可以直接調用它。 使用Jquery的 $.getJSON
方法。 這對我有用。
$.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...!");
});
當您需要通過POST發送數據時,必須像這樣設置數據
xmlhttp.send("appId=XYZ&appKey=XYZ&query=Cheddar Cheese");
在php中,您將獲得如下數據:
echo $_POST['appId'] ; // shows XYZ
echo $_POST['appKey'] ; // shows XYZ
echo $_POST['query'] ; // shows 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.