4

我对获取 Json 数据感到非常困惑。如果有任何问题,请纠正我。下面是我的代码:

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
}
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        var data = JSON.parse(xmlhttp.responseText);
    document.getElementById("getListings").innerHTML=data;
    }
}
xmlhttp.open("GET","https://getJsonData",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.setRequestHeader("Accept", "application/json; charset=utf-8");
xmlhttp.setRequestHeader("Accept-Datetime","Fri, 15 Feb 2013 00:00:00 GMT");
xmlhttp.setRequestHeader("Authorization","XXXXXXX");
xmlhttp.send();

我无法在“getListings”div 上显示任何内容。

4

2 回答 2

5

假设你有 jQuery:

$.ajax({
    type: "GET",
    url: "https://getJsonData",
    dataType: "json",
    success: processData,
    error: function(){ alert("failed"); }
});

function processData(data)
{
    //do something with data
}

此外,不确定您期望将 innerHtml 设置为 json 对象本身,您可能希望通过使用从 json 中获取某种属性值data.someProperty

于 2013-05-15T01:20:47.883 回答
0

我看到几个问题:

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

你应该使用:

xmlHttp.setRequestHeader('Content-Type', 'application/json')

但是,我会这样做,httpRequest.setRequestHeader('Accept', 'application/json');因为这告诉服务器您要接受 JSON,您的状态是您正在发送 JSON。

现在,当您解析 JSON 时,您可能想要查看以下内容:Parse JSON in JavaScript? 因为并非所有浏览器都可以解析 JSON。

现在,当您解析时,您不仅要查看将其放入innerhtml,还要对其进行格式化,然后根据需要将格式化的html代码放入innerhtml。

查看您是否正确解析它的一种简单方法是让警报仅在 json 中显示一个属性。

于 2013-05-15T01:29:59.220 回答