Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Objekt per Ajax
#1
Hallo Leute,



ich bitte mal um eure Hilfe.



Ich habe mir folgendes zusammengebastelt:

Code:
$(document).ready(function()
{
    $('td.editable').on('click', function(e)
    {
        data = {};
        enter = 0;

        data['Text_Old'] = $(this).text();
        data['id'] = $(this).closest("tr").find("td:eq(0)").text()

        // Enter abfangen
        $('td.editable').keydown(function(event)
        {
            if(event.keyCode == 13)
            {
                enter = enter +1;

                if(enter <= 1)
                {
                    data['Text_New'] = $(this).text();
                    save(data);
                }
                event.preventDefault();
                return false;
            }

            // Escape abfangen
            if (event.keyCode == 27)
            {
                $(this).html(data.Text_Old);
                event.preventDefault();
                return false;
            }
        });
    });

    $('td.editable').on('focusout', function()
    {
        enter = enter+1;

        data['Text_New'] = $(this).text();
        save(data);
    });

    function save(data)
    {
        if (data['Text_Old'] === data['Text_New'])
        {
            return false;
        }
        else
        {
            if (enter <= 1)
            {
                // Formular per AJAX senden
                $.ajax
                ({
                    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                    type: 'POST',
                    url: 'index.php?GOTO=Test_Controller/Test/',
                    data: data,
                    //dataType: 'json',
                    encode: true,
                    beforeSend: function()
                    {
                        $('td.editable').css("background","#FFF url(loader.gif) no-repeat right");
                    },
                    success: function (data)
                    {
                        console.log(data);

                    },
                    error: function (xhr, ajaxOptions, thrownError)
                    {
                        console.log(xhr.status);
                        console.log(thrownError);
                    },
                    complete: function ()
                    {
                        $('td.editable').delay("slow").removeAttr("style");
                    }
                });
            }
        }
    }
});



Allerding schein es ein Problem mit data = {}
Ich muss zugeben h habe aber keine Ahnung wie ich das ändere.
Wenn ich nun per PHP antworte bekomme ich die Antwort nicht in der Console sondern in einer leeren Seite.

Kann mir dabei einer helfen?

PS:
Das Forum hat beim ersten versuch alles was nach dem Code Block war entfernt.
Nach dem Posten.
Zitieren
#2
Hat sich erledigt.

Ich hatte die AJAX URL geändert aber FF war der meinug er nutzt die alte.

Ok ich hatte doch nict ganz unrecht es gibt ein Problem mit dem data{}

Ich kann zwar Senden aber bekomme dann in der Konsole den Fehler:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Nun erbitte ich doch wieder Hilfe.

Gruß
René
Zitieren
#3
Moin,
der Fehler steckt hier ganz offensichtlich das du ein Objekt in JavaScript deklariest hast und du darauf zugreifst als wäre es ein Array. Um auf Properties eines Objekt zugreifen bzw. ändern möchtest, musst du da anders vorgen.

Code:
data.Text_Old = $(this).text();
data.id = $(this).closest("tr").find("td:eq(0)").text();

Meine Empfehlung: verwende kein jQuery, da es Nachteile mit sich bringt.

Viele Grüße

rzscout
"Gerne dürft ihr mir eine gute Bewertung da lassen aber auch gegenüber Kritik bin ich offen" Angel
Zitieren
#4
Die Syntax, die Rene verwendet:
Code:
        data['Text_Old'] = $(this).text();
        data['id'] = $(this).closest("tr").find("td:eq(0)").text()
ist vollkommen in Ordnung, wenn auch etwas umständlich, wenn man mit Texkonstanten adressiert.
Vollkommen unverzichtbar ist diese Schreibweise, wenn man mit dem Inhalt einer Variablen adressieren will:
Code:
        const theKey ='Text_Old';
        data[theKey] = $(this).text();

Die Fehlermeldung, die Du, @"Rene", gepostet hast, sagt, dass das Format des JSON ungültig ist. Meistens liegt das daran, dass das PHP-Skript außer dem JSON oder an dessen Stelle noch etwas anderes ausgibt, z. B. eine Fehlermeldung oder eine Ausgabe mit echo, var_dump etc. Überprüfen kannst Du das im Netzwerk-Tab der Entwicklerwerkzeuge deines Browsers, dort findest Du ein Tab "Reponse" wo Du die Antwort vom Server sehen kannst.
Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
(Andrι Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)
Zitieren
#5
Vielen Dank für die Hilfe.

Nun Läuft es iwie es soll.

Gruß
René
Zitieren
#6
Was ist denn hier passiert? "Click to edit"?

Huh Huh Huh
Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
(Andrι Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)
Zitieren
#7
Beim defaul Design fehlen hier Beiträge , die Beiträge fast komplett. Beim Standard Design sind sie alle sichtbar
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
2 Gast/Gäste