2012-02-10 8 views
5

Quiero devolver un conjunto de cadenas de una función MVC a través de una llamada jQuery AJAX.Devolver un conjunto de cadenas de MVC a jQuery ASP.NET

Mi código del lado del cliente es:

function get_categories() { 
    var url = "/Profile/GetCharacters"; 
    $.post(url, function (data) { 
    alert(data); 
}); 

Pero no puede leer elementos de la matriz. En alert(data) siempre dice system.array[] y en alert(data[0]) dice s (es decir, el primer carácter en system.array []) y no los elementos de la matriz.

Aquí se simplifica versión de mi código del lado del servidor .. causa original es grande demasiado complicado :)

public Array GetCharacters() 
    { 

     var ret = new string[10]; 
     ret[0]="abc"; 
     ret[1] = "def"; 
     ret[2] = "ghi"; 
     return (ret); 
    } 

pero esto da "System.string []" al acceder a su lugar y el mismo problema valores individuales

+1

Por qué no volver JSON y analizar eso? –

+1

Por favor, publique su código del lado del servidor (su método de acción). Creo que estás devolviendo una cadena que contiene 'system.array []', en lugar de una matriz serializada JSON. –

+0

no estoy usando json, que es mi plan B si esto no funciona – deepakgates

Respuesta

12

Puede volver JSON.

Por ejemplo, usted podría hacer una petición Ajax a la siguiente acción del controlador:

public JsonResult GetMyData() 
{ 
    SomeClass s = new SomeClass(); 
    s.Property1 = "value"; 
    s.Property2 = "another value"; 

    return Json(s, JsonRequestBehavior.AllowGet); //you will need the AllowGet option to return data to a GET request 
} 

Entonces, javascript podría hacer una petición Ajax (usando la función Ajax de jQuery) al controlador:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
}; 

$.ajax({ 
    type: 'GET', 
    url: '/ControllerName/GetMyData/', 
    success: function (data) { onSuccess(data); } 
}); 

EDITAR: Al devolver una matriz o Lista, deberá agregar la opción tradicional: verdadero a la llamada Ajax, como esta:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
}; 

$.ajax({ 
    type: 'GET', 
    url: '/ControllerName/GetMyData/', 
    success: function (data) { onSuccess(data); }, 
    traditional: true 
}); 

No estoy 100% seguro de por qué (estoy seguro de que alguien nos va a contar), pero eso me ha encajado en el pasado.

Uno más EDITAR: Es posible que tenga que analizar el JSON, que debe crear un objeto real matriz de JavaScript para usted:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
    var arr = JSON.parse(data); 
}; 
+0

gracias !! funcionó – deepakgates

1

¿Qué está ejecutando en el lado de su backend?

Básicamente es posible que desee serializar su matriz primero con json o xml.

Si se trata de PHP, aquí es un ejemplo de jQuery .post API

Ejemplo: Entradas a la página test.php y obtiene contenido que ha sido devueltos en formato JSON.

código PHP

código

<?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>

jQuery

$.post("test.php", { "func": "getNameAndTime" }, 
function(data){ 
    console.log(data.name); // John 
    console.log(data.time); // 2pm 
}, "json"); 

Si se trata de JAVA puede utilizar una biblioteca para serializar objetos JSON como Googles' gson

+0

im utilizando ASP.NET MVC 3 – deepakgates

Cuestiones relacionadas