2013-07-22 5 views
0

У меня есть вызов ajax, возвращающий ответ для данных тепловой карты.Использование ответа ajax в функции javascript

Проблема, с которой я сталкиваюсь, заключается в том, что для обновления тепловой карты новыми данными я должен вызвать функцию, используя данные из ответа ajax.

Вот код:

<script type="text/javascript"> 
var interval = setInterval(function() { 
$.ajax({ 
type: "POST", 
url: "update_1.php", 
data: {}, 
cache: false, 
success: function(html){ 
    var response = eval("(" + html + ')'); 
    $('#checker').html(html); 
if(response.success) 
    { 
heatmap.store.setDataSet(response); 
    } 
} 
}); }, 10000); 

</script> 

и пример возвращения из Аякса вызова вызываются setDataSet():

{max:30, data:[{ x: 480, y: 500, count: 27.00 },{ x: 250, y: 280, count: 26.00 },{ x: 480, y: 330, count: 21.00 },]} 

Я пытался использовать Eval() для сделать его полезным, но он не работает.

Есть ли что-нибудь, что мне не хватает?

Благодаря

+0

В чем проблема? – SLaks

+0

Извините, setDataSet не обновляет тепловую карту новыми данными. – Jimbob

+0

dataType: "json", и использовать: response.max. Или resp = $ .parseJSON (ответ); – ZloyPotroh

ответ

0

Ваш вызов AJAX возвращается JSON. Чтобы «сделать его пригодным для использования», вам необходимо преобразовать его в объект javascript. Есть несколько способов сделать это, я бы сказал, что проще всего использовать $.getJSON вместо $ .ajax.

[Обновления]

  • как сказал RobH в комментариях, убедитесь, что формат JSON является действительным
  • если (response.success) не имеет смысла, я хотел бы предложить, что вы просто удалить это
+0

$ .getJSON ничего не делает ....... – Jimbob

+1

@Jimbob будет терпеть неудачу, потому что ваш JSON недействителен. – RobH

+0

+1 к комментарию RobH, ваши возвращенные данные имеют необычный формат. Например, я ожидал бы, что max, data, x, y, count будут находиться под кавычками, которые будут стандартным форматом (JSON). – Christophe

0

Вероятно, проще всего сделать было бы использовать:

var interval = setInterval(function() { 
    $.ajax({ 
     type: "POST", 
     url: "update_1.php", 
     data: {}, 
     dataType: 'json', 
     cache: false, 
     success: function(data){ 
      heatmap.store.setDataSet(data); 
     }, 
     error: function(xhr, error){ 
      console.log(xhr); 
      console.log(error); 
     } 
    }); 
}, 10000); 

Но ваш JSON Wi должен быть действительным, или он будет терпеть неудачу.

Вам нужно обернуть ключи в кавычках: проверить здесь: http://jsonlint.com

например { "max": 30, "data":[{ "x": 480, "y": 500, "count": 27.00 },{ "x": 250, "y": 280, "count": 26.00 },{ "x": 480, "y": 330, "count": 21.00 }]}

+0

Да, я положил весь ответ в цитаты, но все еще не работает ..... – Jimbob

+0

@Jimbob - вам нужно посмотреть, есть ли AJAX вызов терпит неудачу или неисправен ваш 'heatmap.store.setDataSet()'. Добавьте обратный вызов сбоя к вызову AJAX. – RobH

+0

Кажется, что setDataSet() виноват, потому что ajax не терпит неудачу – Jimbob

Смежные вопросы