2014-03-05 5 views
0

У меня есть кнопка, которая публикуется на сервере. Это отлично работает с двумя параметрами для выполнения запроса, который возвращает объекты JSON. Я хочу асинхронно обновлять веб-страницу с помощью некоторых из возвращаемых данных JSON сразу же после нажатия кнопки. У меня есть этот код, который возвращает undefined или только последнее значение из всех объектов JSON. Я не знаю, что я делаю неправильно, может кто-то любезно указать мне в правильном направлении?jQuery return undefined JSON

$('#mybutton').click(function() { 
    $.post('search.php', { 
      regNo: $("#regNo").val(), 
      datepicker: $(".datepicker").text() 
     }, 
     function(data) { 
      var obj = data.valueOf(); 

      $.each(obj, function(i) { 
       $('#responsetxt').html("<b>"+obj[i].time+ "</b>"); 
      }); 
     }, 
     'json'); 
    }); 
}); 
+0

Вы уверены, что получаете нужные данные из search.php? Включите содержимое search.php, если сможете. – Ehsan

+0

Почему вы выполняете 'var obj = data.valueOf()'? Просто используйте 'data'. –

+0

'{" id ":" 10 "," regNo ":" 357139052579492 "," часовой пояс ":" 0 "," время ":" 1393344365 "," причина ":" 3 "}' -Пример возврата JSON –

ответ

0

Я изменил уродливый индекс data[i].time просто data.time.

` $('#mybutton').click(function() { 
$.post('search.php', { 
     regNo: $("#regNo").val(), 
     datepicker: $(".datepicker").text() 
    }, 
    function(data) { 
     $.each(data, function(i) { 
      $('#responsetxt').html("<b>"+data.time+ "</b>"); 
     }); 
    }, 
    'json'); 
});});` 
0

Если вы получаете undefined, то есть, скорее всего, проблема с данными, вы отправили или нет совпадений.

Что касается «получения только последней», ну ... в вашем .each вы повторно переписываете содержимое #responsetxt, поэтому ... неудивительно, что остался только последний. Вместо этого рассмотрим создание строки и затем вызов .html()после цикл с построенной строкой.

0

Попробуйте это:

$('#mybutton').click(function() { 
$.post('search.php', { 
     regNo: $("#regNo").val(), 
     datepicker: $(".datepicker").text() 
    }, 
    function(data) { 
     $.each(data, function(i) { 
      $('#responsetxt').html("<b>"+data[i].time+ "</b>"); 
     }); 
    }, 
    'json'); 
});}); 
+0

Спасибо Эшан, попробовал, он все еще вернулся неопределенным, и с «timetime» он вернул последнее значение. –

+0

Тогда взгляните на ответ Ниет. Вы получаете «undefined», потому что у вас нет данных. и вы получаете последнее, потому что в каждом цикле вы переписываете значение $ ('# responsetxt'). попробуйте 'alert (obj [i] .time)' в вашем цикле вместо этого и посмотрите, можете ли вы предупредить время обо всех объектах или все еще последнее. – Ehsan