ya he leído esas preguntas, pero ninguno de ellos respuesta a mi necesidad:jQuery, AJAX, JSONP: ¿cómo enviar una matriz, incluso si está vacía?
- Testing for an empty array object in JSON with jQuery
- jQuery 1.4.4+ AJAX request - post empty array or object becomes string
- Cannot access data from jQuery Ajax request, returns empty array
- JQuery removes empty arrays when sending
(la última sólo tiene que añadir uno de dichos citas codificadas, es decir, ['']
pero no puedo hacer esto, estoy llamando a una función que devuelve una matriz)
Así que aquí está mi código (tenga en cuenta que el problema radica en la matriz vacía new Array()
):
function AjaxSend() {
$.ajax({
url: '/json/myurl/',
type: 'POST',
dataType: 'jsonp',
data : { 'tab':new Array() },
context: this,
success: function (data) {
if (data.success) {
console.log('ok');
}
else {
console.log('error');
}
}
});
}
simple eh? Aquí está mi código PHP:
echo '_POST='.var_export($_POST,true)."\n";
Y aquí está el resultado:
_POST=array (
)
jQuery1710713708313414827_1329923973282(...)
Si cambio la Array vacío por un no-vacío, es decir:
'tab':new Array({ 't':'u' },{ 'v':'w' })
El resultado es:
_POST=array (
'tab' =>
array (
0 =>
array (
't' => 'u',
),
1 =>
array (
'v' => 'w',
),
),
)
jQuery1710640656704781577_1329923761425(...)
So esto significa claramente que cuando hay una matriz vacía() que se enviará, se ignorará y no se agregará a las variables POST.
¿Echo de menos algo?
PD: mi versión de jQuery es de la más reciente Google CDN es decir:
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
y
http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js
Quiero la matriz que se enviará, incluso si está vacío (= envíe []
)! ¿Alguna solución? ¿Alguna idea? Ya he intentado agregar esta opción traditional: true
sin éxito.
¿Ha pensado sobre enviar g una variable separada que contiene la longitud de la matriz? Cuando la longitud es cero, la matriz está vacía. Puede usar esta comprobación en lugar de tratar de dar cuenta de la variable de matriz faltante en la publicación. – tvanfosson
'data: {'tab': []},' – Vytautas
@Vytautas: Es lo mismo. –