Frage

Ich habe eine Tabelle von Daten auf meiner Seite. Die Säulen sind „Start“, „Ende“, „Kommentar“ und „Optionen“. Innerhalb der Optionen Spalte ist eine Schaltfläche, um die Zeile zu löschen, und eine Schaltfläche, die eine Zeile der Tabelle editierbar macht. Auf diese Weise kann die Werte von „Start“, „Ende“ und „Kommentar“ geändert werden. Ein Klick beendet sie wieder den Bearbeitungsprozess. Schließlich gibt es eine Möglichkeit, eine andere Zeile in der Tabelle hinzuzufügen. Das alles funktioniert wie erwartet.

Ich möchte eine Schaltfläche am unteren Rand hinzuzufügen, die aus den Daten in der Tabelle ein Feld erzeugt, das (dargestellt als JSON rein für eine einfache zeigt, auf SO: nicht erforderlich): wie folgt aussieht

[
    {
        "start"     :"2009/08/01",
        "end"       :"2009/08/08",
        "comment"   :"an example date.",
    },
    {
        "start"     :"2009/07/01",
        "end"       :"2009/07/08",
        "comment"   :"another example date, a month earlier.",
    },
    {
        "start"     :"2000/07/01",
        "end"       :"2000/07/08",
        "comment"   :"another example date, a year earlier. You get the idea.",
    }
]

Ich sollte nicht zu viel Mühe Bau der Array haben, aber sobald ich habe, wie kann ich es zu einem Backend-PHP-Skript schreiben (die dann put_csv() verwenden die Daten in eine Datei zu schreiben)? Idealerweise wäre es availiable Server-Seite in einem Array-Format, wird die Validierung zu ermöglichen.

Ich bin glücklich Jquery zu verwenden, wenn es erforderlich ist.

War es hilfreich?

Lösung

Wie Sie es auf dem Server zu beenden hängt davon ab, was tun Sie archieve wollen. Wenn Sie eine neue Seite geladen werden sollen, die die Daten verarbeiten, können Sie eine übliche Form mit versteckten Eingängen verwenden. Alternativ, wenn Sie im Hintergrund über AJAX bearbeiten möchten, verwenden Sie jQuery.ajax wie gesagt CRasco. Wie auch immer Sie verwenden, müssen Sie die strukturierte Anordnung in eine einfache Schlüssel / Wert-Liste konvertieren.

Eine Option ist ein JSON-Dokument zu erzeugen (ich glaube nicht, jQuery eine Funktion dafür bietet, aber man kann leicht etwas finden) und verwendet ein einzelnes Feld mit dem serialisierten Dokument. Dann auf der Server-Seite würden Sie json_decode verwenden das Array zurück zu bekommen. Wenn Sie die AJAX-Methode verwenden, würde die Datenoption in jQuery.ajax Aufruf enthalten:

{
    'data': '[{"start":"2009/08/01","end":"2009/08/08","comment":"an example date."},...'
}

Ein besserer Ansatz wäre es in eine Liste von Feldern in einem Format zu serialisieren, die PHP nativ versteht. Das heißt, Sie haben zu tun, nichts Besonderes, und $_POST['data'] wird das Array enthält. Zum Beispiel:

{
    'data[0][start]': '2009/08/01',
    'data[0][end]': '2009/08/08',
    'data[0][comment]': 'an example date.',
    'data[1][start]': '2009/07/01',
    'data[1][end]': '2009/07/08',
    'data[1][comment]': 'another example date, a month earlier.',
    ... 
}

Wenn Sie die Formular-Methode verwenden, müssen Sie Eingabefelder wie generieren:

<input type="hidden" name="data[0][start]" value="2009/08/01" />

Andere Tipps

Ich würde auf jeden Fall jQuery verwenden. Hier ist die Seite für die $ .post () Funktion.

http://docs.jquery.com/Ajax/jQuery.post

Ein Nachteil ist, dass $ .post () ist ein Wrapper für die $ Schnipsel () Funktion, die vereinfacht und beseitigt Ihre Fähigkeit, sondern eine erfolgreiche Post-Rückrufe für irgendetwas zu setzen. Für wichtige Transaktionen über AJAX, würde ich diese verwenden:

http://docs.jquery.com/Ajax/jQuery.ajax

Ein Beispiel ist:

$.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      success: function(msg){
         alert(msg);
      }
   });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top