Frage

Ich denke, dies nicht genau möglich ist, aber vielleicht bin ich falsch. Ich bin einfach zwischen denen, zerrissen, die, die nur POST-Anfragen glauben sollen die Daten auf dem Server und die Menschen ändern, das die Regel und erlaubt GET-Anfragen entspannen, um Daten zu ändern.

Nehmen Sie diese Situation. Sagen Sie bitte eine Tabelle haben, ist jede Zeile eine Zeile in der Datenbank. Ich mag sie erlauben, die Zeile über eine fancy „X“ -Symbol als letztes <td></td> Element in der Zeile zu löschen. AFAIK, der einzige Weg, eine POST an den Server zu senden ist über ein Formular. Aber tun wirklich, dass ich eine ganze Form in den letzten <td></td> Element stopfen nur eine POST zu tun? Oder sollte ich betrügen und ein <a href=...></a>-Tag verwenden, die eine GET-Anfrage sendet?

Sie können „beide tun! Eine POST senden und die <a ...></a> Tag! Verwenden Phantasie Javascript + xhr nutzen!“ Denken Und ich werde sagen, oh? Und wie soll das Verschlechterungs in einer Null-JavaScript-Umgebung?

Vielleicht haben wir einen Punkt erreicht, wenn es Sinn macht sich keine Sorgen über anmutig erniedrigender machen? Ich bin mir nicht sicher. Du sagst es mir? Ich bin neu in Web-Entwicklung, aber ich verstehe die meisten der beteiligten Konzepte.

War es hilfreich?

Lösung

Sie müssen ein Formular nicht in jedes Finale td stopfen - Sie die gesamte Tabelle mit einer einzigen Form umgeben können, die eine Schaltfläche in jedem Finale td vorzulegen hat. Jeder braucht einen anderen Namen / ID-Wert, z.

    <td><input type="submit" name="delete_172" value="Delete"></td>
    ...
    <td><input type="submit" name="delete_198" value="Delete"></td>

Dann wird der Server eine einzelne delete_172=Delete in der Form POST Parameter erhalten. Scan durch alle Parameter delete_[0-9]+, Split auf Strich zu entsprechen, und Sie haben die Datensatz-ID des Datensatzes gelöscht werden, oder Sie haben einen Mapkey die Datensatz-ID löschen zu finden (wenn Sie aus der Protokoll-IDs behalten möchten Seite für die Sicherheit)

Danach funktioniert, fügen Sie eine JS-Ereignishandler Form onSubmit Ereignis, das Ganze durch XHR einreichen und dynamisch die Tabellenzeile löschen.

Andere Tipps

Eines der Probleme mit einem GET-Request Daten modifiziert ist, dass die Verbindungsdaten durch den Besuch geändert wird. Der Link kann nicht einmal von einer Person navigiert werden, z.B. Google Crawling Ihrer Website. Schlagen Refresh ändert sich auch die Daten.

Ich rate nicht die Konvention über GET vs POST ignorieren. Die Zurück-Taste und Seitenaktualisierungen und ähnliches werden Sie Hölle geben. (Und jedes Mal, wenn Sie eine POST-Anforderung Feld, Umleitung auf eine neue Ansicht, aus den gleichen Gründen.)

Nur Sie kennen Ihre Benutzer, aber ich denke, es ist heutzutage ziemlich akzeptabel ist Javascript erforderlich in einer ‚Web-Anwendung‘ und lassen Sie die no-js Jungs zu bleiben ‚Web-Seiten.‘ Wie auch immer, für das, was es wert ist, habe ich manchmal wie eine weniger Lust zu tun (als AJAX) Javascript-Lösung wie dieses ...

Setzen Sie ein Formular überall Sie auf der Seite mögen:

<form method="post" target="yourpage.ext" id="deleteRecordForm">
 <input type="hidden" name="IdToDelete" value="" id="deleteRecordInput" />
</form>

Für Ihren Link:

<a href="#" onclick="deleteRecord(thisId);return false;">[x]</a>

Schließlich wird das javascript:

<script type="text/javascript">
 function deleteRecord (id){
   if (confirm ('Are you sure you want to delete this record?')){
     document.getElementById('deleteRecordInput').value = id;
     document.getElementById('deleteRecordForm').submit ();
   }
 }
</script>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top