Bonsoir à tous :D,

Encore merci pour ce site, il m'a beaucoup aidé :).

J'ai une petite question, je réalise en ce moment une application web. J'ai commencé par apprendre le php, puis j'ai utilisé cakephp.
Maintenant je vois que de plus en plus de fonction que j'aimerais utilisés sont plus "faciles" à mettre en oeuvre via javascript.
Ma question : Quel choix faire ? mi java - mi js ? full php ?
Par exemple, je viens de découvrir le plugin dataTable pour jQuery, il permet de faire une pagination, des cherches dans les résultats et afficher un nombre d'élements en fonction d'une selection.
Un choix tellement simple à mettre en place, mais plus dur à coder en php.
Je me pose cette question surtout au niveau performances ou encore si le client n'a pas javascript ( ca existe encore ?).

Autre chose, quand je charge des elements via ajax, mes tableaux, mes tabs, etc rien ne fonctionne sur le nouvelle element qui vient de se charger.
Je pourrais ré executer mon script suite au chargement mais je sais que la fonction live le fait.

Mais comment ? j'ai réussi à l'utiliser pour des elements futurs cliquables, mais si je clique pas dessus ? si je n'agit pas dessus ?

23 réponses


Salut,

Le gros défaut d'Ajax c'est le référencement des pages, tu y perds beaucoup.
Après d'un point de vue visuelle ça donne quand même^^

Au niveau performance, je sais pas trop, une requête Ajax appel un contrôleur, mais sans tu l'appel aussi.
Par contre pour dataTable, c'est fait niveau client, donc moi de charge serveur.

Pour mon compte personnel, l'AJAX c'est après, c'est une couche supérieur, il faut un bon code PHP dans tous les cas.

Ca dépend des cas je dirais, un table sortable avec une pagination sans PHP c'est cool
par contre si PHP doit te sortir 10 000 enregistrement ça va péter :D

Donc juste mesure à utiliser entre perf et fonctionnalités. Mais ne pas hésiter à utiliser du js oui (l'argument "ceux qui n'ont pas js activé est pas vraiment valable)

XciD
Auteur

Effectivement j'avais pas ça comme ça ;s... au début ça risque de tourner ... après 1000 enregistrement j'ai peur aussi que ca marche pas. ya un moyen de remplir une table pour tester ?

Sinon au niveau du live ? comment réussir ?

Merci pour vos réponses :)

Je vois pas trop le pb si tu met un live('click',function()...) sur un élément ça marche nan ?

XciD
Auteur

ça fonctionne mais si je clique pas dessus ?
en gros ma datatable arrive mais elle n'as pas la fonction paginate etc après si je clique dessus ça apparaît mais sans cliquer dessus c'est possible ?

Salut,

Oui c'est possible :

function mafonction(){
    //LE CODE QU'IL AVAIT DANS LE LIVE function(){}
}
$("#tontrucaclicker").live("click", mafonction);
});
$("document").ready(mafonction);//Où autre

A+

XciD
Auteur

Décidément j'ai du mal à comprendre, la fonctionne fonctionnera que si je clique ?

Par exemple, j'utilise le js Uniform pour styliser les boutons, quand je fais un appel ajax, j'ai un retour de formulaire avec le bouton mais il se stylise seulement quand je clique dessus :/

Je dois mal comprendre

$(".box_content button").live('click',function(){
    $(this).uniform();
});

Merci

Salut,

Tu as fais ce que j'ai mis?

function styliser(var lebouton){
    lebouton.uniform();
}

$(".box_content button").live("click", function(){
    styliser($(this));
});

$("document").ready(function(){
    $(".box_content button").each(function(){
        styliser($(this));
    });
});

A+

XciD
Auteur

Je viens de le faire, le bouton est bien styliser quand il est sur une page, mais lors d'un appel il se stylise seulement quand je clique dessus :/
j'ai du enlever le var aussi.

Merci +

Ok bah je ne comprends pas alors...
En gros, le bouton apparait après? Il existe pas au début?

XciD
Auteur

Nop, je fais un appel ajax qui genere un formulaire dans un zoombox, et le bouton qui est dedans n'est styliser que quand je clique dessus

Tu as bien une action qui ouvre la zoombox?
Quand tu as cette action, tu demandes à styliser le bouton.

XciD
Auteur
('.addopp').live('click',function(){

                    var url = "operations/add/1";
                    console.log(url)
                    $.ajax({
                        url: url,
                        async:true,
                        type:'get',
                        complete: function(request) {
                            $.zoombox.html(request.responseText,{
                                        theme : 'simple',
                                        duration : 400,
                                        width : 400,
                                        height : 400,
                                        opacity : 0.5
                                    });
                            styliser($(".box_content select, .box_content input:checkbox, .box_content input:radio, .box_content input:file, .box_content button"));            
                        }
                    });
                    return false;
                });

Meme au click il n'y a plus la stilisation

Ok juste avant return false mets ça pour voir :
$(".box_content select").each(function(){
alert("ok");
}
Est-ce que tu as des alert?

XciD
Auteur

non, et le modal n'apparait plus :/

Enlève la ligne styliser

XciD
Auteur

nop, j'ai essayer en dessous de styliser et au dessus de return false et le modal n'apparait plus dans les deux cas

Et si tu enlève styliser ça redevient bon je suppose.

XciD
Auteur

Yep lol,
Mais pas le bouton :/

Oui mais je suis bête, tu utilises ma fonction que je t'ai donné?

Mets juste ça pour voir : styliser($(".box_content select")); Sinon c'est $(".box_content select").uniform();

XciD
Auteur

Fonctionne pas :/ cela viendrais pas de la zoombox ?

Non c'est juste que de cette fonction, tu as pas encore accès au formulaire...

Ca me turlupine ton truc.

Tu peux envoyer ton code sur extrarox@hotmail.fr stp?
En me précisant, dans quel js c'est de quel lien tu le lances, etc...