Ho già letto queste domande, ma nessuno di loro risposta alla mia necessità:jQuery, AJAX, JSONP: come inviare effettivamente un array anche se è vuoto?
- 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
(l'ultimo uno ha detto Just Add quotazioni hard-coded cioè ['']
ma non posso farlo, sto chiamando una funzione che restituisce una matrice)
Quindi, ecco il mio codice (si noti che il problema sta alla matrice vuota 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');
}
}
});
}
semplice eh? Ecco il mio codice PHP:
echo '_POST='.var_export($_POST,true)."\n";
Ed ecco il risultato:
_POST=array (
)
jQuery1710713708313414827_1329923973282(...)
Se cambio l'Array vuoto da un non-vuoto, vale a dire:
'tab':new Array({ 't':'u' },{ 'v':'w' })
Il risultato è:
_POST=array (
'tab' =>
array (
0 =>
array (
't' => 'u',
),
1 =>
array (
'v' => 'w',
),
),
)
jQuery1710640656704781577_1329923761425(...)
Quindi questo significa chiaramente che quando viene inviato un array vuoto(), viene ignorato e non viene aggiunto alle variabili POST.
Mi manca qualcosa?
PS: la mia versione jQuery è dalla più recente di Google CDN cioè:
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
e
http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js
voglio la matrice da inviare, anche se è vuoto (= invia []
)! Qualche soluzione? Qualche idea? Ho già provato ad aggiungere questa opzione traditional: true
senza successo.
hai pensato su sendin g una variabile separata contenente la lunghezza dell'array? Quando la lunghezza è zero, la matrice è vuota. È possibile utilizzare questo controllo piuttosto che cercare di tenere conto della variabile di array mancante nel post. – tvanfosson
'data: {'tab': []},' – Vytautas
@Vytautas: È lo stesso. –