2012-01-17 18 views
152

Possible Duplicate:
Serializing to JSON in jQuery

Quiero enviar un array como una petición Ajax:

info[0] = 'hi'; 
info[1] = 'hello'; 

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    success: function(msg){ 
    $('.answer').html(msg); 
    } 
}); 

¿Cómo puedo hacer esto?

+0

solución aquí: http://stackoverflow.com/questions/713884/convert-js-array-to-json-object-for-use-with-jquery-ajax – Z4k4r14

+0

tipo: 'post', url: '/ url/action /', data: {param1: 1, id: "text"}, dataType: 'text', – Paul

Respuesta

197
info = []; 
info[0] = 'hi'; 
info[1] = 'hello'; 


$.ajax({ 
    type: "POST", 
    data: {info:info}, 
    url: "index.php", 
    success: function(msg){ 
    $('.answer').html(msg); 
    } 
}); 
+9

sí ... funcionó ... gracias ... se puede hacer una cosa más ... que es inicializar ** info = {}; ** luego ** datos: información, ** –

+1

envía 0 = hola y 1 = hola, ¿funcionará? depende de su código del lado del servidor. info = {} es un objeto simple en Javascript. info = [] es un objeto de matriz. – Diode

+0

¿Cómo lo harías si quieres 'info = arrayasvalues' en lugar de que cada clave sea un param? –

52

Sólo tiene que utilizar el método JSON.stringify y pasarlo por el parámetro "datos" para la función $ .ajax, como sigue:

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    dataType: "json", 
    data: JSON.stringify({ paramName: info }), 
    success: function(msg){ 
     $('.answer').html(msg); 
    } 
}); 

Sólo tiene que asegurarse de incluir los json2.js presentar en su página ...

+0

Necesitaba agregar 'JSON.stringify (...)' ¡Gracias por la asistencia! – ChaseHardin

+0

En mi caso, el mapa clave-valor solicitado era incorrecto con el código anterior. Cambié la línea de "datos" a: datos: {paramName: JSON.stringify (info)}, – Shogg

8

dado que está utilizando jQuery por favor utilice es seralize función para serializar los datos y luego pasarlo al parámetro de datos de llamada AJAX:

info[0] = 'hi'; 
info[1] = 'hello'; 

var data_to_send = $.serialize(info); 

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    data: data_to_send, 
    success: function(msg){ 
     $('.answer').html(msg); 
    } 
}); 
+1

Esto no es todo cierto, al menos no hoy. jQuery en realidad no serializaría automáticamente cualquier matriz. Cuando probé con una matriz simple de enteros, guardaba solo el último elemento. Consulte esta publicación para obtener más información: http://stackoverflow.com/a/4239496/261332 – userfuser

+0

Gracias @userfuser He actualizado la respuesta y eliminado la parte de serialización automática. – BlackDivine

+11

¿cómo es que esto tiene tantos upvotes? No existe tal función jQuery como 'jQuery.serialize()'. Hay '.serialize()' pero está destinado a ser utilizado en un conjunto de elementos de formulario. Pruebe este código y solo obtendrá 'TypeError: $ .serialize no es una función' – billynoah

Cuestiones relacionadas