2012-03-26 19 views
0

Ich habe einen Web-Service und ich versuche, Daten von JSON zu bekommen. Wenn ich auf den gleichen Server zugreife, funktioniert das gut, aber wenn ich es auf das Hosting hochlade, funktioniert es nicht. das Problem ist das "? Rückruf =?" param. mit Chrom sehe ich das zurück json aber der Code unten hat es nicht im Eingangstext zeigen:kann JSON mit JQuery nicht bekommen getJSON

<html><head> <script src="jquery-1.7.1.min.js" type="text/javascript" ></script> 
    <script> 
     $(document).ready(function() 
     { 
      $("#cons").click(function(){ 
       alert("wait"); 
       var nombre = $("#nombre").attr('value'); 
       if(nombre!==''){ 
        var today = new Date(); 
        var mm = today.getMonth()+1; //January is 0! 
        var yyyy = today.getFullYear(); 

        $.getJSON("http://grup15.mihost.info/index.php/WS/Api/user/nombre/"+nombre+"/ano/"+ yyyy +"/mes/"+mm+"/format/json?callback=?", function(data) { 

         var htmlResult = ""; 
         $.each(data, function(key, val) { 
          htmlResult += val.total; 
         }); 

         $('#gasto').attr('value',htmlResult); 
        }); 
       }else{ 
        alert("Nombre Necesario"); 
       } 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <table> 
     <tr> 
      <td>Nombre:</td> 
      <td><input type="text" id="nombre" value=""/></td> 
     </tr> 
     <tr> 
      <td>Gasto De este mes:</td> 
      <td><input id="gasto" type="text" value=""/></td> 
     </tr> 
     <tr><td colspan="2"><button id="cons" type="button">Consultar</button></td></tr> 
    </table> 


</body> 

Wenn ich die löschen „Callback = Chrom zeigt:?“ nicht erlaubt von Access- ctrl-Allow-Origin“ was ich ??? danke für die Hilfe zu tun haben!

+1

Behandelt Ihr Server JSONP? Die Anforderung müsste den Rückruffunktionsnamen analysieren und die Anforderung in eine JavaScript-Funktion dieses Namens umbrechen. – Joe

Antwort

2

?callback=? mich ans JSONP, was bedeutet, dass der Server JSONP und nicht JSON zurückgeben soll.

JSONP ist eigentlich ein Skript, das sieht aus wie so:

func({data: 123, test: 456}); 

braucht Ihre Daten in dem Wert des callback Parameter eingewickelt werden.

+0

Wie kann ich die Daten in den Wert von Rückrufparameter ?? Vielen Dank! – Roomm

+0

@Roomm: Lesen Sie den Wert des Callback-Parameters (es ist eine GET-Variable), und drucken Sie dann eine Zeichenfolge wie: 'func ({data: 12})'. Hier ist ein PHP-Beispiel: 'echo $ _GET ['callback']. '('. $ data. ')'; '. –

+0

danke !! aber ich muss es in Javascrip tun es ist möglich? – Roomm

2

Sie können nicht AJAX Cross-Domain wie dies anfordert machen. Verwenden Sie JSONP statt.

+1

Er verwendet JSONP, '$ .getJSON' verwendet JSONP, wenn Sie'? Callback =? 'Hinzufügen. –

+0

Ich denke, die Syntax kann verwirrend sein jQuery "json? Callback =?" sollte "jsoncallback =?" sein –

+0

Ich glaube nicht, dass die Syntax ein Problem ist, es ist eine gültige URL. –

0

Wenn Sie keine JSONP Sie könnten eine Wrapper-Funktion bauen, um Ihre Daten zu holen machen kann. Vielleicht über PHP.

Werfen Sie einen Blick: craigslist rss feed. Meine Lösung ist so aufgebaut, dass sie mit XML arbeitet, aber sie sollte leicht konvertiert werden können, um mit JSON zu arbeiten.