enviar matriz usando jquery

Tengo una variable $ visitRecord-> getReferallist () que obtiene la lista de médicos en una matriz. Necesito enviar la matriz a un archivo php y hacer una acción foreach en el archivo php. ¿Cómo envío esta variable de matriz en jquery? Este código no funcionó.

function seekOpinion() { var queryUrl = "url(array('controller' => 'consultant', 'action' =>'opiniondoclist'));?>"; $.post(queryUrl,{referal:'',visitId:'',referalList:'getReferallist(); ?>'},function(data) { $('.opiniondoclistData').html(data); }); document.getElementById('opiniondoclistDiv').style.display = ""; } 

Tu problema es que estás trabajando con una matriz en PHP.

echo $ visitRecord-> getReferallist (); // Devuelve un conjunto de referencias.

Cuando convierte la matriz en una cadena haciéndole eco (porque el eco emite cadenas), obtiene el texto “Matriz”.

Para enviar esto por el cable (desde javascript a través de AJAX ($ .post)) tendrá que convertir su lista de referencias en una cadena. Un método es la serialización. Puede convertir su matriz en un “formato de cadena” utilizando la función serializar (). http://www.php.net/serialize.

Cuando esto se recibe de PHP en la solicitud AJAX, puede convertir su matriz “formateable en cadena” de nuevo en una matriz pura utilizando la función unserialize (). http://www.php.net/unserialize.

Tu código debe cambiar de

$ visitRecord-> getReferallist ();

a

serialize ($ visitRecord-> getReferallist ());

Luego, cuando se reciba, debes cambiar tu código de

$ referrals = $ _POST [‘referalList’]; // Versión de Stringable de la matriz

a

$ referrals = unserialize ($ _ POST [‘referalList’]); // Arreglo PHP puro

Utilice Serialize () para transformar su matriz en una cadena, envíela y luego use unserialize () para volver a colocarla en una matriz en php;

Publicar por fascículos()

Creo que puedes usar json_encode () para codificar la matriz como una cadena que jquery podrá leer nuevamente como una matriz de javascript

EDIT : lo siento, no leí tu pregunta correctamente, veo que no quieres leer la matriz en javascript, pero en PHP, así que probablemente serialize () y unserialize () es mejor que json_encode () suponiendo que se escapa correctamente para usar con javascript.

 var sendData = 'referal=&visitId=&referalList=getReferallist()); ?>'; $.post(queryUrl, sendData,function(data) { //etc 

Entonces la secuencia de comandos de recepción puede (además de cualquier sanitización necesaria):

 $referalList = explode('-', $_POST['referalList']); 

No olvide agregar las tabs a todas las variables que está repitiendo si es necesario

PHP creará automáticamente una variable de matriz a partir de una cadena de consulta o datos publicados, que contiene un “[]” al final del nombre. Por ejemplo, puede hacer una llamada de carga jQuery de la siguiente manera para pasar una matriz a PHP.

 $('#target').load('index.php?foo[]=a&foo[]=b'); 

En el lado de PHP, tendrá una matriz llamada foo en $ _GET

  

Las funciones AJAX de jQuery, por ejemplo $ .post, $ .get y $ .ajax, pueden pasar matrices de JavaScript como esta en sus secciones de datos; solo asegúrese de nombrar la variable con un “[]” al final para que PHP sepa cómo manejarla eso.

Encontré una solución a este problema …

Use esta función en su javascript …

 function js_array_to_php_array (a) { var a_php = ""; var total = 0; for (var key in a) { ++ total; a_php = a_php + "s:" + String(key).length + ":\"" + String(key) + "\";s:" + String(a[key]).length + ":\"" + String(a[key]) + "\";"; } a_php = "a:" + total + ":{" + a_php + "}"; return a_php; } 

a es la matriz que pasaste en esta función, entonces … en tu php donde obtienes la matriz de retorno de esta función, escribe este código …

 $my_array = unserialize(urldecode(stripslashes($_COOKIE['php_array']))); // print_r ($my_array); 

Espero eso ayude…