2014-01-03 2 views
0

В настоящее время у меня есть URL-адрес, который предоставляет данные в формате json.получить json данные от jsonp

URL:

http://10.0.1.11/render?target=threshold(400,test)&from=-1mins&format=json&jsonp=? 

при запуске в браузере дает мне

?([{"target": "test", "datapoints": [[400, 1388755180], [400, 1388755190], [400, 1388755200], [400, 1388755210], [400, 1388755220], [400, 1388755230], [400, 1388755240]]}]) 

я должен был бы результат JSON в переменную для дальнейшей обработки. Я пробовал следующий

foo 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script> 
$.getJSON("http://10.0.1.11/render?target=threshold(400,test)&from=-1mins&format=json&jsonp=?", function(result){ 
    //response data are now in the result variable 
    alert(result); 
}); 
</script> 

Я в идеале бы нужно:

var test = [{"target": "test", "datapoints": [[400, 1388755180], [400, 1388755190], [400, 1388755200], [400, 1388755210], [400, 1388755220], [400, 1388755230], [400, 1388755240]]}]; 

Где я буду неправильно?

+2

Что случилось с 'result' переменной? Какую обработку вы хотите сделать? Вы понимаете, как работает [JSONP] (https://en.wikipedia.org/wiki/JSONP), и это не имеет ничего общего с JSON? – Bergi

+0

Я забыл добавить источник, поэтому мне не хватало предупреждения. При добавлении источника My alert states [object Object] –

+1

Вы не говорите, в чем проблема. Я предполагаю, что вы полагаетесь на 'alert()' для отладки, таким образом, все ваши данные передаются в строки. Вместо этого найдите консоль своего браузера. –

ответ

1

Вам нужно интерпретировать запрос как jsonp, а не json. jsonp подобен json, но это json, завернутый в вызов метода. (См: What is JSONP all about?)

Вы можете использовать что-то вроде:

<script> 
    function myCallback(json_data){ 
     //do something with json_data! 

    } 
    </script> 
    <script type="text/javascript" src="http://10.0.1.11/render?target=threshold(400,test)&from=-1mins&format=json&jsonp=myCallback"></script> 

или

<script> 
     $(document).ready(function(){ 
      $.ajax({ 
       url: 'http://10.0.1.11/render?target=threshold(400,test)&from=-1mins&format=json', 
       dataType: 'jsonp', 
       success: function(json_data){ 
         //do something with json_data! 
        } 
       } 
      }); 
     }) 
    </script> 

(примеры адаптировано из связанного поста)

+0

Я лично посоветовал использовать jQuery, но все же делал AJAX вручную без видимых причин. –

+0

@ ÁlvaroG.Vicario, Что вы предлагаете? Я пытаюсь добавить функции табуляции в Giraffe https://github.com/kenhub/giraffe/blob/master/js/giraffe.js. У меня есть следующая функция: http://jsfiddle.net/arg9X/81/ –

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