6
votes

Consumer API JSON appelle via TVJS-TVOS

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 xxx

J'ai essayé d'utiliser cette fonction avec une modification xxx

mais n'a pas fonctionné. Toute astuce ou aide?

Si je dois utiliser Nodejs, comment puis-je faire cela?


0 commentaires

6 Réponses :


1
votes

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);
}


0 commentaires

0
votes

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
    }
  }
};


0 commentaires

4
votes

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, ' '));
  }
});


3 commentaires

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?



0
votes

Si vous souhaitez appeler la demande sur l'application lancement, il suffit d'ajouter une application.js: xxx pré>

}); } 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();
},


2 commentaires

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?



2
votes

J'ai testé celui-ci sur le TVOS - fonctionne comme un charme avec la syntaxe de JQuery's Syntaxe (Essais de base): XXX PRE>

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
    });
}


0 commentaires

1
votes

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}';
};


0 commentaires