2012-02-03 3 views
0

J'essaie d'afficher les données Redis dans le navigateur en utilisant Webdis et jQuery. Redis et Webdis fonctionnent correctement à partir de la ligne de commande (en utilisant curl), mais je ne peux pas obtenir les données à afficher dans le navigateur. Webdis répond avec JSON et la réponse curl est {"GET": "103"}. Quelqu'un connaît le problème? Suggestions pour améliorer tout cela sont les bienvenus. Merci!Afficher la réponse Webdis dans le navigateur

Le code est ci-dessous:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <!-- load JQuery from Google API --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> 
    </script> 

    <!-- This is the jQuery template for the JSON returned by Webdis --> 
<script id="webdisTemplate" type="text/x-jquery-tmpl"> 
     <li>${GET}</li> 

</script> 

<!-- jQuery Ajax request through Webdis that feeds the Redis data into the template --> 
    <script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $.ajax({ 
      url: "http://127.0.0.1:7379/GET/value", 
      data: "format=json", 
      dataType: "json", 
      success: function(data) 
      { 
       $("#webdisTemplate").tmpl(data.items).appendTo("#placeholder"); 
      } 
     }); 
    }); 
    </script> 
<title>Webdis Test</title> 
</head> 
<body> 
    <h4>Value:</h4> 
    <ul id="placeholder"></ul> 
</body> 
</html> 
+0

Essayez-vous de transmettre "format = json" à votre méthode de serveur? Sinon, la propriété "data:" représente les paramètres que vous voulez transmettre et doit être définie par la méthode serveur. –

+0

Cela semble plutôt faux. Postez votre ligne de commande PRECISE curl. – bmargulies

Répondre

1

La réponse est un peu en retard, mais je suppose qu'il peut être utile à d'autres personnes à. J'ai utilisé deux machines donc s'il y avait un problème CORS, il devrait augmenter, mais je n'ai pas eu de problème avec ça. Mon extrait neige comment obtenir des données si $ .ajax, si vous êtes toujours confronté au problème faites le moi savoir afin d'élargir la réponse.

Dans votre code js:

var key = 123; 

$.ajax({ 
    url: "http://example.com:7379", 
    data: "GET/" + key, 
    type: 'POST', 
    success: function(data) { 
    $("outputArea").html(data.GET); 
    }, 
    error: function(err) { 
    console.log("error", err); 
    }); 

$("#outputArea").html(data.GET); 

espère que cela a aidé!

-1

La réponse à cette question n'est pas quelqu'un ici pour deviner le problème en lisant votre code et imaginer la configuration du serveur, mais plutôt pour vous d'utiliser des outils de débogage. Si, par exemple, vous utilisez les outils de développement de Chrome, la vue du réseau vous montrera exactement ce qui finit par aller du navigateur au service, et ce qui revient.

Vous pourriez même juste voir une exception Javascript explicative.

Je soupçonne fortement que vous souffrez de CORS, et que le navigateur refuse de vous laisser faire parce que cette page Web n'est pas servie de http://127.0.0.1:7379.

0

Je suis l'auteur de Webdis. Je suis sûr que @bmargulies a raison, cela ressemble à un problème de CORS. Webdis inclut un en-tête Access-Control-Allow-Origin, mais ce n'est peut-être pas suffisant.

J'ai ouvert a ticket on the github project to keep track of this issue. Je vais y jeter un coup d'oeil aujourd'hui.

Cheers,

Nicolas

(modifier) ​​

La demande fonctionne réellement bien, même lorsqu'il est exécuté pour un domaine séparé. Webdis inclut les en-têtes CORS, à savoir Access-Control-Allow-Origin: * et Allow: GET,POST,PUT,OPTIONS.

Cela dit, la ligne de modèle ne fonctionne pas pour moi:

$("#webdisTemplate").tmpl(data.items).appendTo("#placeholder"); 

Je reçois le message d'erreur suivant dans la console de Chrome:

Uncaught TypeError: Object [object Object] has no method 'tmpl' 

Si je console.log pour imprimer data, je peut voir l'objet de réponse comme prévu.

Je peux confirmer que cela fonctionne dans les deux Chrome 15 et Firefox 8.

+0

Merci Nicolas. Webdis fonctionne et répond correctement. Le problème est ailleurs. En passant, Webdis est vraiment génial - merci. –

Questions connexes