使用POST请求AJAX发送json对象
Sending json object across using POST request AJAX
我是一个新手开发试图建立一个web应用程序,使利用nutritionx.com公共api。我有以下一段Javascript来获取'Cheddar Cheese'的脂肪内容
<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"}");
如何正确地发送一个Json对象到服务器,正在请求它使用POST在Javascript?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
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 如何为json对象中的段发送array[]
- 将JSON对象传递给angular指令
- 更改JSON对象的结构
- 访问JSON对象内部的数组元素
- 在ejs-partial中对JSON对象进行迭代
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 访问嵌套JSON对象的键,其中键是动态的
- json对象中缺少对象循环
- 发送json对象或使用express路由呈现视图
- 在play2框架中向json对象添加下拉列表项
- 元素名称上带有短划线 (-) 字符的 Json 对象
- autocomplete不接受源的json对象
- 如何在javascript中创建动态json对象
- 在使用客户端脚本时拾取JSON对象
- 如何通过json对象数组为嵌套对象赋值
- 构造JSON对象