繁体   English   中英

使用POST请求AJAX发送JSON对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM