Foro

[solucionado]Problemas con ScriptTagProxy

0
Gracias de ante mano por la ayuda que puedan brindarme. El problema es el siguiente necesito Cargar en un Combo un Json desde otro servidor que no es el mio por lo que no puedo usar Ext.data.HttpProxy. Segun la documentacion debo usar ScriptTagProxy pero me da el siguiente error [color=#FF0000]invalid label[/color] en la consola del firebug y sin embargo la respuesta del sito es la que yo espero un pequeño ejemplo de respuesta ya que son muchos datos es: [color=#BF0000]{"success":true,"rows":[{"username":"osvaldo"},{"username":"pedro"},{"username":"roberto"}]}[/color] mi codigo es el siguiente
               var proxy2 = new Ext.data.ScriptTagProxy({
                        url: 'http://10.208.1.6/sf/chpass/web/index.php/app/usernames'
               })
                var store = new Ext.data.Store({
                    reader: new Ext.data.JsonReader({
                        fields: [{name:'username'}],
                        root: 'rows'
                    }),
                    proxy: proxy2,
                    autoLoad: true
                });
               	
		var usuarios=new Ext.form.ComboBox({
			fieldLabel:'Usuarios',
			name:'usuario',
                        width:157,
			store: store, 
                        mode: 'remote',
			emptyText:' su usuarios',
			triggerAction: 'all',
                        hideTrigger:true,
		});
               
Gracias una de nuevo.
0
Hola, he probado tu codigo, y efectivamente sale el "invalid label", pero sale si es que no tengo en consideración, lo siguiente: El API indica que en el servidor debes gestionar la petición de la siguiente manera(Codigo JAVA):
boolean scriptTag = false;
String cb = request.getParameter("callback");
if (cb != null) {
    scriptTag = true;
    response.setContentType("text/javascript");
} else {
    response.setContentType("application/x-json");
}
Writer out = response.getWriter();
if (scriptTag) {
    out.write(cb + "(");
}
out.print(dataBlock.toJsonString());
if (scriptTag) {
    out.write(");");
}
Este código lo que va hacer es enviar una respuesta de la forma: stcCallback1001({"success":true,"rows":[{"username":"osvaldo"},{"username":"pedro"},{"username":"roberto"}]}) y ya Ext JS se encarga de invocar a esa funcion stcCallback1001, que ha sido generada por el mismo framework para gestionar tu respuesta. Solo probé con ese código java en el servidor y listo, ya funcionó. Ahh también añadí el parámetro de configuración displayField:'username' en tu combo, porque no se veia los usuarios. sldos
0
Hola mayerhorna estas en lo cierto. muchas gracias, ayer por la noche lo resolvi y no habia podido postear.Es esactamente como dices lo que paso fue que no me me percate del callback hasta que encontre este codigo php y se me aclaro todo.aqui lo dejo por si alguien se encuentra con el mismo problema
   1. <php  
   2. require_once('../lib/json/json.php');  
   3. $json = new Services_JSON();  
   4.   
   5. $scriptTag = false;  
   6. $cb = $_GET['callback'];  
   7.   
   8. if (!emptyempty($cb)) {  
   9.   $scriptTag = true;  
  10.   header("Content-type: text/javascript");  
  11. } else {  
  12.   header("Content-type: application/x-json");  
  13. }  
  14.   
  15. if ($scriptTag) echo $cb . "(";  
  16.   
  17. echo $json->encode(  
  18.   Array(  
  19.     'totalCount' => $res->numRows(),  
  20.     'dt' => getData($_GET['start'])  
  21.   )  
  22. );  
  23.   
  24. if ($scriptTag) echo ");";  
  25. ?>  
muchas gracias y nos vemos

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.