2013-04-19 6 views
5

Ich schreibe eine node.js App und bin ein bisschen besorgt darüber, wie ich Post-Daten zum Senden an den Server erstellen. Zum Beispiel, wenn ich ein Datenelement löschen möchten, lege ich die ID des Elements in der href-Attribut:Daten für eine POST-Anfrage in href speichern - schlechte Praxis?

<a class='delete' href="1231">Delete this data</a> 
<!-- href is based on a variable I'm pulling from the server --> 

Wenn dieser Link angeklickt wird, verhindere ich, Standardaktionen und dann eine Ajax-Anforderung auszuführen:

//On click + ajax 
body.on('click', '.delete', function(e){ 
e.preventDefault(); 
    $.ajax({ 
     type: 'POST', 
     url: '/admin/report/detail/delete', 
    data: {id: $(this).attr('href')}, 
    success: function(){ 
     //Success message 
    }, 
    error: function(){ 
     //Error message 
    } 
}); 
}); 

Ich frage mich, ist es schlechte Praxis, das Attribut href auf diese Weise zu verwenden? Wenn ja, wie speichern Sie diese Daten am besten?

Antwort

9

Verwenden Sie stattdessen Datenattribute. Speichern sie in der href ist nicht semantisch, was ist, wenn Sie manchmal IDs und andere Daten zu anderen Zeiten speichern möchten? Sie können beliebig viele Datenattribute erstellen und ihnen semantische Namen geben.

<a class="delete" data-id="1231" href="#"> 

Dann in Ihrem javascript:

... 
data: { id: $(this).data('id') } 
... 

ODER

data: { id: $(this).attr('data-id') } 
+0

Danke, genau das habe ich mir gedacht. Sollte mein href nur ein einfaches '#' sein? –

+0

Ja, ein Hash ist die häufigste href für Ajax-Anker. Ich benutze immer '#'. Du könntest auch 'javascript:;' verwenden, aber das verschmutzt dein HTML und ist unnötig. –

2

Um ehrlich zu sein, sind Sie immer auf die zu lösch gehen zu müssen, die ID des Datensatzes senden Server, aber Sie tun es. Selbst wenn Sie Datenattribute verwenden, ist das hier nicht das Problem, Sie senden die Daten "über die Ader" über AJAX, damit die Benutzer die ID sehen können.

Sie müssen denken - in Ordnung, diese ID kann geändert werden, aber klug Sie mit ihm sind, werden die Menschen einen Weg finden, es zu ändern und möglicherweise unterschiedlichen Kunden-IDs löschen ... so ... immer stellen Sie sicher, Sie tun die relevanten Sicherheitskontrollen Serverseite dh ist der aktuelle angemeldete Benutzer in der Lage, die Benutzer-ID zu löschen, durch die gesendet wird?

+0

+1 dafür, meine Antwort ist alles über Semantik, aber wenn es Fragen bezüglich der Sicherheit gibt, ist diese Antwort genau richtig. –

+0

und +1 für Ihre, Sie verstanden die Frage mehr als ich, ich nahm es in einem Sicherheitskontext. –

+1

Ja, ich habe die Authentifizierung auf der Server-Seite. Eigentlich konvertiere ich all diese Löschanforderungen von GET nach POST (frag mich nicht, was ich dachte, als ich den Code zum ersten Mal schrieb). –

Verwandte Themen