Passer de ceci :
// Multiple media insertion helpers
dotclear.mm_select.getInfos = (path, list, pref, tb, fn) => {
// Call REST Service
$.get('services.php', {
f: 'getMediaInfos',
xd_check: dotclear.nonce,
path,
list,
pref,
})
.done((data) => {
if ($('rsp[status=failed]', data).length > 0) {
// For debugging purpose only:
// console.log($('rsp',data).attr('message'));
window.console.log('Dotclear REST server error');
} else {
// ret -> status (true/false)
// data -> media infos
const ret = Number($('rsp>mm_select', data).attr('ret'));
if (ret) {
const json = $('rsp>mm_select', data).attr('data');
fn(tb, JSON.parse(json));
}
}
})
.fail((jqXHR, textStatus, errorThrown) => {
window.console.log(`AJAX ${textStatus} (status: ${jqXHR.status} ${errorThrown})`);
})
.always(() => {
// Nothing here
});
return null;
};
À cela :
// Multiple media insertion helpers
dotclear.mm_select.getInfos = (path, list, pref, tb, fn) => {
list = JSON.stringify(list);
pref = JSON.stringify(pref);
// Call REST Service
dotclear.jsonServicesPost(
'getMediaInfos',
(data) => {
if (data.ret) {
fn(tb, data.info);
}
},
{path, list, pref},
);
return null;
};
J’adore :-)
PS : L’usage de JSON.stringify()
permet de passer des paramètres complexes (tableaux, objets, …) et il suffit côté PHP d’utiliser un json_decode()
avec le 2e argument à true si c’est un tableau de clé/valeur.
1 De Jean-Christian Denis -
Je vais peut-être même y arriver maintenant !
2 De Franck -
Y’a pas de raison, d’ailleurs je vais mettre ça en place partout où je peux.