J'essaie de jouer avec TVOS et j'ai une petite question concernant la manipulation de l'appel JSON. Je dois obtenir des données via une API, disons pour des raisons de test que j'appelle ce lien J'ai essayé d'utiliser cette fonction avec une modification p> mais n'a pas fonctionné. Toute astuce ou aide? P> Si je dois utiliser Nodejs, comment puis-je faire cela? P> p>
6 Réponses :
Avez-vous appelé votre fonction dans "APP.Enlaunch"
App.onLaunch = function(options) { var url = 'http://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20location%3D%223015%22&format=json'; var doc = getDocument(url); console.log(doc); }
Vous devez implémenter le ONREADYSTATECHANGE événement sur L'objet XHR à gérer la réponse:
templateXHR.onreadystatechange = function() { var status; var data; if (templateXHR.readyState == 4) { //request finished and response is ready status = templateXHR.status; if (status == 200) { data = JSON.parse(templateXHR.responseText); // pass the data to a handler } else { // handle the error } } };
C'est celui que j'ai travaillé. Ce n'est pas idéal à bien des égards, mais vous montre quelque chose pour commencer.
jsonRequest({ url: 'https://api.github.com/users/staxmanade/repos', callback: function(err, data) { console.log(JSON.stringify(data[0], null, ' ')); } });
L'avez-vous essayé à TVJS, TVOS?
Est-ce que cela est possible d'intégrer angularjs dans le projet TVML. Et utilisez le service HTTP angularjs $ pour obtenir les données JSON, puis utilisez NG-REPEAT pour rendre dynamiquement le modèle pour générer une chaîne XML? Pas vraiment bon chez Vaillia JS ou JQuery. J'adorera quelqu'un à pointer de la volonté d'utiliser Angularjs et TVOS ensemble!
@Hughhou avez-vous pensé de c'était possible?
Si vous souhaitez appeler la demande sur l'application lancement, il suffit d'ajouter une application.js: });
} p> dans présentateur.js Ajouter une méthode: P> request: function() {
var xmlhttp = new XMLHttpRequest() , method = 'GET' , url = 'your Api url';
xmlhttp.open( method , url , true );
xmlhttp.onreadystatechange = function () {
var status;
var data;
if (xmlhttp.readyState == 4) {
status = xmlhttp.status;
if (status == 200) {
data = JSON.parse(xmlhttp.responseText);
console.log(data);
} else {
var errorDoc = createAlert("Evaluate Scripts Error", "Error attempting to evaluate external JavaScript files.");
navigationDocument.presentModal(errorDoc);
}
}
};
xmlhttp.send();
},
Pourriez-vous s'il vous plaît élaborer plus votre réponse Ajout d'un peu plus de description sur la solution que vous fournissez?
Comment allez-vous alors consommer la réponse dans votre modèle?
J'ai testé celui-ci sur le TVOS - fonctionne comme un charme avec la syntaxe de JQuery's Syntaxe (Essais de base): Exemple Exemple Series Travailler sur Apple TV: P> var testPut = function(){
$.ajax({
type: 'PUT',
url: url,
success: successFunc,
error: errFunc,
dataType: 'json',
contentType: 'application/json',
data: data2
});
}
var testGet = function(){
$.ajax({
dataType: 'json',
url: url,
success: successFunc,
error: errFunc,
timeout: 2000
});
}
var getLarge = function(){
$.ajax({
dataType: 'json',
url: url,
success: successFunc,
error: errFunc,
timeout: 2000
});
}
Je suis tombé sur cette question à la recherche d'accomplir la même chose et j'ai été inspiré par la réponse de @ Jasonjerrett, mais je l'ai trouvé un peu manquant parce que, dans mon cas, j'utilise un modèle XML intégré à JavaScript comme celui-ci:
// Index.xml.js var Template = function(data) { return 'really long xml string with injected ${data}'; };