2015-12-03 1 views
1

У меня есть 2 URL-адреса, которые я пытался получить, используя функцию jget jQuery. Первая ссылка работала отлично, однако вторая не добавила данные в div.jQuery - .get работает для 1 URL-адреса, но не другой

//Locate the input box 
 
var URL = $('#download'); 
 
//When button gets pressed 
 
function downloadURL(){ 
 
//Get the URL from the input box 
 
var downloadURL = URL.val(); 
 
//Get the contents of the JSON on the website linked 
 
     $.get(downloadURL, 
 
\t //add it to the output div 
 
      function(data){ 
 
       $("#output").append(data) 
 
      } 
 
    ); 
 
//Tell me that it has actually accepted the URL 
 
alert(downloadURL); 
 
}
<p> <input type="text" name="download" id="download" placeholder="Download URL"></p> 
 
<button onclick="downloadURL()">Test</button>       
 
<div id="output"></div>

В 2 адреса я попытался были: https://raw.githubusercontent.com/TemporalReality/modpacks/master/packs/ingenuity.json и http://widget.mcf.li/mc-mods/minecraft/224791-blood-magic.json

Любые идеи, почему это работает для одного URL, а не другой? Или лучший способ сделать это?

+0

Что сказал вышедший выше меня парень. Единственный способ, которым вы можете обойти это, - это запросить данные с сервера с помощью скрипта php или сервера. – Chris

ответ

2

Второй URL-адрес возвращается как object вместо string. $.append ожидает объект DOM или строку.

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

urls = []; 
urls.push("https://raw.githubusercontent.com/TemporalReality/modpacks/master/packs/ingenuity.json"); 
urls.push("http://widget.mcf.li/mc-mods/minecraft/224791-blood-magic.json"); 

$(urls).each(function(i, item){ 
    $.get(item, function(data){ 
    console.log(typeof data, item); // <-- watch the console 
    if (typeof data === "object") { 
     data = JSON.stringify(data); 
    } 
    $("#output").append(data).append('<hr>'); 
    }); 
}); 

Предположив вы хотите сделать что-то более интересное с ним, вы можете оставить объект в покое и преобразовать строку в объект с JSON.parse или $.parseJSON.

if (typeof data === "string") { 
    data = JSON.parse(data); 
} 
console.dir(data); 
+0

+1 вам, на самом деле надоело тестировать обе ссылки, и оба они кажутся работающими, только один не идентифицирует себя как JSON, поэтому он не разбирается в jQuery, строка не разбирается. Есть гораздо более простой способ решить эту проблему, просто добавьте тип данных в качестве последнего аргумента для '$ .get', а jQuery будет анализировать его независимо, например: http://jsfiddle.net/a1n635ed/ – adeneo

+0

Большое спасибо , это прекрасно <3 – Jordan

+0

Рад, что это помогло. И хороший момент @adeneo. Если вы уже используете jQuery, возможно, это тоже удастся. – Will

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