Aller au contenu


Photo

Récupération du prix de l'app pour site


  • Please log in to reply
19 réponses à ce sujet

#1 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 15:51

Bonjour,
 
je suis en train d'essayer de récupérer le prix de mon appli pour la mettre sur mon site. 
 
J'utilise le code suivant : 

function parseJson()
{
var myURL = 'http://itunes.apple.com/lookup?id=530871584'
 
$.getJSON(myURL, function(json) {alert("price: " + json.results[0].price);})
.done(function(json) {alert("success");})
.fail(function(json) {alert("error");})
.always(function(json) {alert("complete");});
}

 
Je tombe systématiquement sur un "fail", alors  que si je récupère le contenu de l'URL et que je l'enregistre en local, ça fonctionne.
Est-ce quelqu'un utilise cette fonctionnalité ? Est-ce que cela peut provenir des options du serveur ? (je suis chez free).
 
Merci d'avance de vos pistes.


Framebuilder : sur l'Appstore, Site Web

#2 AliGator

AliGator

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 13 621 messages
  • LocationRennes (France)

Posté 07 octobre 2013 - 16:19

C'est une erreur de copier/coller, ou bien tu déclares ta variable myURL mais tu ne l'utilises jamais et ne la passe réellement même pas à $.getJSON ?
La Doc, c'est moi — Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !
CocoaPods : Getting StartedLe Blog CocoaPodsCherchez des podsDocs de pods
Mon GitHub: OHHTTPStubs, SwiftGen…
Mon Blog: Crunchy Development

#3 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 16:32

Erreur de copier coller, sorry, je corrige.


Framebuilder : sur l'Appstore, Site Web

#4 AliGator

AliGator

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 13 621 messages
  • LocationRennes (France)

Posté 07 octobre 2013 - 17:10

Et tu n'as aucune erreur dans ta console Javascript ? (Tu n'as pas oublié d'importer le script de jQuery par exemple ?)
La Doc, c'est moi — Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !
CocoaPods : Getting StartedLe Blog CocoaPodsCherchez des podsDocs de pods
Mon GitHub: OHHTTPStubs, SwiftGen…
Mon Blog: Crunchy Development

#5 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 17:14

Non, la ligne Jquery est bien là,

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>

et, comme ça fonctionne en local, je pense que le code est bon.

Voilà ce que je fais sur mon serveur local (myFile.json est un bête copier-coller de l'URL appelé). Et dans ce cas là, je récupère le prix sans problème.

function parseJson()
{
	var myURL = 'myFile.json'
	
	 $.getJSON("", function(json) {alert("price: " + json.results[0].price);})
	 .done(function(json) {alert("success");})
	 .fail(function(json) {alert("error");})
	 .always(function(json) {alert("complete");});
}

Framebuilder : sur l'Appstore, Site Web

#6 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 17:22

Et tu n'as aucune erreur dans ta console Javascript ?

 

Sinon, je vois ça où, la console Javascript ?


Framebuilder : sur l'Appstore, Site Web

#7 AliGator

AliGator

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 13 621 messages
  • LocationRennes (France)

Posté 07 octobre 2013 - 17:23

Et cette console Javascript alors, elle t'indique qqch ou pas ?

[EDIT] Ah ben on s'est croisés ;)

Sinon, je vois ça où, la console Javascript ?

Bah ça dépend, c'est quoi ton contexte ? Tu testes ce code dans un navigateur c'est ça ?

Si tu utilises Safari c'est caché dans le menu Développement (qu'il faut avoir préalablement activé dans les Préférences Avancées de Safari), dans "Inspecteur Web". Si tu utilises Chrome, c'est dans le petit menu à 2 traits en haut à droite, sous-menu Outils > Outils de Développement.
Ou alors, sur Safari comme sur Chrome, clic droit sur ta page et choisis "Procéder à l'inspection de l'élément" dans le menu contextuel.
Si tu utilises un autre navigateur, bah heu… passe sur Safari ou Chrome ^^
La Doc, c'est moi — Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !
CocoaPods : Getting StartedLe Blog CocoaPodsCherchez des podsDocs de pods
Mon GitHub: OHHTTPStubs, SwiftGen…
Mon Blog: Crunchy Development

#8 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 17:28

Ok, je l'ai trouvée, merci.

XMLHttpRequest cannot load http://itunes.apple.com/lookup?id=530871584&name=John&time=2pm. Origin http://framebuilder.free.fr is not allowed by Access-Control-Allow-Origin.

Framebuilder : sur l'Appstore, Site Web

#9 AliGator

AliGator

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 13 621 messages
  • LocationRennes (France)

Posté 07 octobre 2013 - 17:34

Ah oui, les fameuses règles de Cross-Domain pour faire de l'AJAX…
La Doc, c'est moi — Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !
CocoaPods : Getting StartedLe Blog CocoaPodsCherchez des podsDocs de pods
Mon GitHub: OHHTTPStubs, SwiftGen…
Mon Blog: Crunchy Development

#10 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 17:35

Du coup avec l'erreur, j'ai pu trouver d'autres infos, dont cette page : 

 

http://cypressnorth....-safari-jquery/

 

avec à mon avis, c'est ça qui est important 

In a .NET WCF service, it’s easiest to add this to the global.asax of your service like so:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","*");
}

Mais là, du coup, je ne comprends pas où ça intervient. Je ne sais pas du tout quoi faire avec ça.

 

EDIT : (encore croisés :))


Framebuilder : sur l'Appstore, Site Web

#11 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 17:56

Est-ce que je place ça dans mon htaccess ?


Framebuilder : sur l'Appstore, Site Web

#12 AliGator

AliGator

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 13 621 messages
  • LocationRennes (France)

Posté 07 octobre 2013 - 18:01

Et t'as essayé en rajoutant "&callback=?" à la fin de ton URL comme expliqué dans la doc jQuery sur $.getJSON (pour contourner les restrictions cross-domain grâce à JSONP, ce qui est aussi indiqué dans [url=http://www.apple.com...search-api.html]la doc de l'API itunes.apple.com concernant le paramètre "callback") ?
La Doc, c'est moi — Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !
CocoaPods : Getting StartedLe Blog CocoaPodsCherchez des podsDocs de pods
Mon GitHub: OHHTTPStubs, SwiftGen…
Mon Blog: Crunchy Development

#13 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 18:06

Non, je n'ai pas essayé ça, j'y vais de ce pas.


Framebuilder : sur l'Appstore, Site Web

#14 AliGator

AliGator

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 13 621 messages
  • LocationRennes (France)

Posté 07 octobre 2013 - 18:15

Je viens d'essayer à l'instant, ça ça marche.
Il faut bien utiliser à la fois "?callback=?" mais aussi utiliser "https" et pas "http" pour requêter l'API iTunes.
 
function parseJson()
{
  var myURL = 'https://itunes.apple.com/lookup?callback=?'
  var params = { 'id':'530871584' };
  $.getJSON(myURL, {'id':'530871584'}, function(json) {alert("price: " + json.results[0].price);} );
}

La Doc, c'est moi — Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !
CocoaPods : Getting StartedLe Blog CocoaPodsCherchez des podsDocs de pods
Mon GitHub: OHHTTPStubs, SwiftGen…
Mon Blog: Crunchy Development

#15 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 18:15

Merveilleux, ça marche. Mille merci.

 

EDIT : sans https, ça fonctionne aussi. Après, ce n'est peut-être pas gagné sous IE. Il faut que je teste ça.

var myURL = 'http://itunes.apple.com/lookup?id=530871584&callback=?'
$.getJSON(myURL + "&callback=?", null, function(json) {alert("price: " + json.results[0].price);})
			.done(function(json) {alert("success");})
			.fail(function(json) {alert("error");})
			.always(function(json) {alert("complete");});

Framebuilder : sur l'Appstore, Site Web

#16 AliGator

AliGator

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 13 621 messages
  • LocationRennes (France)

Posté 07 octobre 2013 - 18:18

Heu dans ton code tu as mis 2 fois "callback=?" au final à la fin de ton URL ^^

PS : Pour le coup du https c'est sans doute parce que je testais le code en live depuis le Google Code Playground qui est un site hébergé en https donc je suppose que dans ce cas il n'autorise que les requêtes AJAX vers du https aussi, mais dans ton cas comme tu es sur un site "http" tout court requêter l'API iTunes via "http" doit en effet suffire, c'était juste un cas particulier de mon contexte de test ;)
La Doc, c'est moi — Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !
CocoaPods : Getting StartedLe Blog CocoaPodsCherchez des podsDocs de pods
Mon GitHub: OHHTTPStubs, SwiftGen…
Mon Blog: Crunchy Development

#17 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 18:24

Euh... oui, et ce n'est par par excès de zèle... mais à force de taper du code... je suis assez étourdie. Mais, il est sympa, il marche quand même... Comme quoi, on cherche pendant des heures, on teste des dizaines de lignes de codes... et on en laisse passer une plus grosse que soi, et là ça marche quand-même ! Va comprendre ;)

 

Bon, je finalise, j'ai bien galéré là-dessus, mais bien contente. Encore merci.


Framebuilder : sur l'Appstore, Site Web

#18 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 18:59

Et pour ceux que cela intéresse, pour récupérer le prix dans le bon store, ajouter "&country=code pays :

Je vais essayer d'affiner la méthode pour récupérer le prix des in-Apps.

var myURL = 'http://itunes.apple.com/lookup?id=530871584&country=fr'
$.getJSON(myURL + "&callback=?", null, function(json) {alert("price: " + json.results[0].price);})
			.done(function(json) {alert("success");})
			.fail(function(json) {alert("error");})
			.always(function(json) {alert("complete");});

Framebuilder : sur l'Appstore, Site Web

#19 AliGator

AliGator

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 13 621 messages
  • LocationRennes (France)

Posté 07 octobre 2013 - 20:16

NB ce n'est qu'une question de style, mais perso je trouve ça plus lisible de passer les paramètres GET (id=…, country=…) en 2e argument de $.getJSON, plutôt que de les mettre toi-même directement dans l'URL (en plus en les passant en 2e argument, jQuery s'occupe de les encoder si besoin pour qu'ils respectent les conventions des RFC concernant les URLs)


Donc plutôt que de mettre directement "?id=530871584&country=fr" à la fin de ton URL, je trouve plus lisible de pas le mettre dans myURL (qui ne contient du coup que la baseURL vers l'API "http://itunes.apple.com/lookup") et passer « { 'id':'530871584', 'country':'fr' } » à la place de « null » en 2e argument de $.getJSON.

Après ce n'est qu'une affaire de goût, mais en plus ça permettra de plus facilement personnaliser les paramètres que tu passes au lookup, de faire ressortir plus clairement le country utilisé et l'id de l'App, de plus facilement ajouter des paramètres…
La Doc, c'est moi — Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !
CocoaPods : Getting StartedLe Blog CocoaPodsCherchez des podsDocs de pods
Mon GitHub: OHHTTPStubs, SwiftGen…
Mon Blog: Crunchy Development

#20 Booleanne

Booleanne

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 507 messages
  • LocationVendée

Posté 07 octobre 2013 - 22:04

Après ce n'est qu'une affaire de goût…

 

Non, ce n'est pas une affaire de goût... Javascript, jQuery, je n'y connais rien.. je m'en sors en piquant des bouts de codes, par ci, par là, mais je n'ai jamais vraiment pris la peine d'approfondir... je vais souvent au plus urgent. Donc, dans la mesure du possible, je suis les conseils qu'on me donne. Merci, donc, pour les précisions.


Framebuilder : sur l'Appstore, Site Web




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)