Satisfaction

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.

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15754

Haut de page