2013-05-15 133 views
3

我对获取Json数据非常困惑。如果有任何问题,请纠正我。下面是 我的代码:如何发送HttpRequest,并返回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什么。

+0

你怎么不使用jQuery? jQuery.ajax()非常适合这个 – daniel

+0

嗨,我该如何使用jQuery.ajax()发送HTTPRequest? – Alex

+0

mclaassen做出了正确的答案 – daniel

回答

3

假设你有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

+1

@ user1667419你可能想添加console.log(data); processData函数里面如果你第一次尝试它 – daniel

+0

Thx为你的回应。对于我所得到的,似乎我也需要在请求头中附加“Accept-Datetime”和“Authorization”。如果使用$ .ajax,我在哪里添加它? – Alex

+0

如果你需要授权,你可以使用beforeSend设置:http://api.jquery.com/jQuery.ajax/ - 你需要确保你需要它(虽然我只是猜测,但你可能没有) – daniel

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中的一个属性。

相关问题