jQuery解析JSON响应

时间:2014-02-25 05:27:59

标签: javascript jquery json

我成功发布到PHP文件,并获得了良好的响应。我似乎无法获得的部分是解析它然后在我的页面上显示它。这是我在验证处理程序中的javascript:

submitHandler: function(form) {
    var formData = $(form).serialize();
    $.post('http://test.php', formData, function(data) {
        if(data.success) {
            $('#load').show();
            var response = i;
            $('#load').hide();
            //var msg = '';
            for(var i = 0; i < x.flights.length; i++) {
               msg += '<span>';
               msg += '<p>Flight Number: ' + x.flights[i].flight_number + '</p>';
               msg += '<p>Cost: ' + x.flights[i].cost + '</p>';
               msg += '</span>';
            }
            //this is were I think it should display. but It's not working

            $('#load').html(msg);

这是我的json回复:

   success
true

 message
"Success"

flights
[Object { flight_number="334", cost="983.40", departure_city="Kearney Regional Airpor...arney, Nebraska - (EAR)", more...}]

0
Object { flight_number="334", cost="983.40", departure_city="Kearney Regional Airpor...arney, Nebraska - (EAR)", more...}

flight_number
"334"

cost
"983.40"

departure_city
"Kearney Regional Airport, Kearney, Nebraska - (EAR)"

arrival_city
"Chadron Muni Airport, Chadron, Nebraska - (CDR)"

departs
"2014-03-19 04:33:00"

arrives
"2014-03-19 08:12:00"

duration
"219"

adult_seats_available
"2"

senior_seats_available
"1"

我知道你没有看到JSON响应,但我可以在FF firebug中看到它。我是jQuery / JSON的新手,我只想将响应打印到我的页面。提前谢谢。

3 个答案:

答案 0 :(得分:0)

查看JSON.stringify(data) doc我不知道您希望在哪里展示您的JSON,但是如果您只是想知道它是什么打开调试器而console.log(JSON.stringify(data));应该这样做

答案 1 :(得分:0)

您正在使用post方法,它可能默认返回xml,json,script,text,html。所以你从post方法中获取数据。

尝试查看https://api.jquery.com/jQuery.post/

如果你想访问它,那么你可以使用JSON.stringify(data)将json显示为字符串。要从json访问数据,您可以使用点(。)表示法。

答案 2 :(得分:0)

这里有几件事要看。

首先,您要将html(即msg)添加到#load元素($('#load').html(msg);),但是在您隐藏它的代码的前面($('#load').hide();) 。所以我认为这将回答你的主要问题;即删除第$('#load').hide();行或在$('#load').show();行后添加$('#load').html(msg);

还没有看到什么?那么也许响应并不像你声称的那么严重,所以或许更方便的方法来检查分配给msg的内容是提醒html alert(msg);&lt; - 在你之后拨打这个电话建立你的HTML。

除此之外,使用#load元素,您似乎正在使用它来保存加载gif,但也通过msg的内容为其分配响应。也许您需要分离元素的使用,以便#load元素用于加载gif,并为响应添加另一个元素。所以你的代码更像是这样。

<强> HTML

<div id="load" class="hide"><img src="loading-animation.gif">...</div>
<div id="post-response" class="hide alert"><div>

其中隐藏显示无警告类表示响应警报的样式。

<强> JS

submitHandler: function(form) {

    // show the loading gif before we make the 
    // post data and wait for an async response
    $('#load').show();

    ...
    $.post('http://test.php', formData, function(data) {
        if(data.success) {

            // post-back has completed so lets hide the animation
            $('#load').hide();

            // your code to build html msg

            // assign and show the response element
            $('post-response').html(msg);
            $('post-response').show();
            ...