2013-04-17 6 views
0

J'ai deux boutons prev/next qui appellent un getJSON. Je veux modifier une requête en fonction du bouton sur lequel on a cliqué. Voici mes boutons et getjson statmentsComment savoir quel bouton a été cliqué?

<input class="buttonsr" type="button" onClick="next()" name="NextLoad" value="Next Load"><input class="buttonsr" type="button" onClick="prev()"name="PrevLoad" value="Prev. Load"> 
$.getJSON("loadloads.php", document.getElementById('LoadNumber').value, jsonhandler) 

Je voudrais faire quelque chose comme ci-dessous à l'aide du LoadNumber de l'EEG.

if isset($_GET['prev']){ 
    $find = 'Where L.$_GET['LoadNumber'] > (max)LoadNumber FROM tblLoads' 
} 
if isset($_GET['next']){ 
    $find = 'Where L.$_GET['LoadNumber'] < (min)LoadNumber FROM tblLoads' 
} 
else{ 
    $find = 'L.LoadNumber = (SELECT MAX(LoadNumber) FROM tblLoads)' 
}; 
+4

Votre code est actuellement [vulnérable] (http://xkcd.com/327/). –

+0

avec le chèque d'objet événement: http://stackoverflow.com/questions/10428562/how-to-get-javascript-event-source-element – elopez

Répondre

0

Vous devez utiliser la même fonction et simplement transmettre un paramètre au serveur. Quelque chose comme

<input class="buttonsr" type="button" onClick="page('next')" name="NextLoad" value="Next Load"> 

function page(direction) { 
    $.getJSON("loadloads.php?direction="+direction,document.getElementById('LoadNumber').value,jsonhandler) 
} 

Du côté du serveur, utilisez le $ _GET [ « direction »] pour voir si vous allez suivant ou précédent.

if ($_GET['direction'] == 'next') { 
    // GO NEXT 
} else { 
    // GO PREV 
} 

Et en passant, "isset()" ne prend que 2 "s";) l'espoir que cela a aidé, vous pouvez commenter si je Maladroit!

+0

Je voulais vraiment que ce soit SSSET. Je pense que c'est la direction que je dois suivre, mais maintenant j'ai des problèmes avec la variable dans ma requête qui ne fonctionne pas. J'obtiens une erreur de serveur interne d'erreur 500 de réseau. –

+0

Si vous avez copié ce que j'ai écrit, il y a un espace dans l'URL qui ne devrait pas être là. J'ai édité. Assurez-vous que vos en-têtes sont correctement envoyés (vous pouvez utiliser firebug ou chrome (réseau) dans la console (f12 sur les deux navigateurs) pour voir si les paramètres sont correctement envoyés) – Bene

+0

Je pense que cela a quelque chose à voir avec les guillemets. J'ai query = 'sélectionnez d'où' $ var 'orderby'; –

0

Je peux me tromper, mais je crois que si vous voulez accéder « LoadNumber » dans l'époque globale $ _GET super vous devez passer dans un objet pour le paramètre de données en $ .getJSON comme ceci:

$.getJSON("loadloads.php", { LoadNumber:$('#LoadNumber').val() }, jsonhandler); 
    // NOTE: I used jquery shorthand instead of document.getElementById() to get the value 
    // simply to shorten it up. 

Je ne l'ai pas utilisé $ .getJSON() avant, mais à partir de la documentation: http://api.jquery.com/jQuery.getJSON/
il est dit que $ .getJSON est juste un raccourci pour .ajax $ en utilisant une méthode de requête get si vous passez dans un objet à la clé de ce que vous cherchez alors je suppose que $ .getJSON mettra cela dans $ _GET pour vous de saisir. Kolkin est également correct que ce code est vulnérable à l'injection SQL, vous ne devriez jamais insérer des données de $ _GET, $ _POST ou $ _REQUEST directement dans votre requête SQL sans le filtrer. Vous risquez d'ouvrir votre code à des injections malveillantes qui pourraient effacer les données de votre base de données ou accéder aux données sensibles et les renvoyer.

Hope this helps.

Questions connexes