Post-Variablen durch Ajax übergeben

Lesezeit: 2 Minuten

Benutzer-Avatar
Studiozeit

Ich habe einen Link:

<a class="tag" wi_id="3042" wl_id="3693" for_user_id="441" href="#a">

was einen Ajax-Aufruf auslöst

$(".tag").click(function() {
        var for_user_id = $(this).attr("for_user_id");
        var wl_id = $(this).attr("wl_id");
        var wi_id = $(this).attr("wi_id");
        $.ajax({
            type: "POST",
            url: "/ajax/actions/tag.php",
            data: { 
                'for_user_id': 'for_user_id', 
                'wl_id': 'wl_id',
                'wi_id': 'wi_id'
            },
            success: function(data){
                $(this).text("You've tagged this");
                $(this).closest('.gl_buttons_holder').toggleClass('gl_buttons_holder gl_buttons_holder_tagged');
                $(this).closest('.gl_buttons').addClass('tagged');
            }
        });
        return false;
    });

Aber in der Konsole sehe ich folgendes:

TypeError: e is undefined

Die Ajax-Datei wird verarbeitet, aber die POST-Daten sind leer, und die Erfolgsaktionen finden nicht statt, sodass sie mit Nullen gepostet werden und die Klassen nicht geändert werden

Ich habe gestarrt und gestarrt … irgendetwas Offensichtliches?

  • 'for_user_id': for_user_id, Anstatt von 'for_user_id': 'for_user_id',

    – Satpal

    6. Februar 2014 um 21:08 Uhr

  • Ich sehe nichts in Ihrem Code, das diesen Fehler verursachen würde, es sei denn, dieser Fehler wird durch Ihren Servercode ausgelöst, den Sie nicht bereitgestellt haben.

    – Kevin B

    6. Februar 2014 um 21:12 Uhr


  • Das sieht nach einem Javascript-Fehler aus, nicht nach PHP. Aber es gibt keine e Variable irgendwo im Code.

    – Barmar

    6. Februar 2014 um 21:14 Uhr

  • @KevinB es wurde $(this) im Rückruf ohne – Kontext: this – verwendet, was den Fehler verursachte

    – Studiozeit

    6. Februar 2014 um 21:21 Uhr

this wird nicht automatisch an die AJAX-Callback-Funktion übergeben. Du kannst den … benutzen context: Parameter, um jQuery anzuweisen, es zu übergeben:

    $.ajax({
        type: "POST",
        url: "/ajax/actions/tag.php",
        data: { 
            'for_user_id': for_user_id, 
            'wl_id': wl_id,
            'wi_id': wi_id
        },
        context: this,
        success: function(data){
            $(this).text("You've tagged this");
            $(this).closest('.gl_buttons_holder').toggleClass('gl_buttons_holder gl_buttons_holder_tagged');
            $(this).closest('.gl_buttons').addClass('tagged');
        }
    });

  • Danke, ich wusste nicht, dass ‘dies’ nicht an den Rückruf weitergeleitet wird, ich lese jetzt darüber – werde es akzeptieren, wenn ich kann

    – Studiozeit

    6. Februar 2014 um 21:18 Uhr

Sie senden Ihre Daten falsch, rufen Sie Ihre Variablen nicht in einfachen Anführungszeichen auf.

$(".tag").click(function() {
        var for_user_id = $(this).attr("for_user_id");
        var wl_id = $(this).attr("wl_id");
        var wi_id = $(this).attr("wi_id");
        $.ajax({
            type: "POST",
            url: "/ajax/actions/tag.php",
            data: { 
                'for_user_id': for_user_id, 
                'wl_id': wl_id,
                'wi_id': wi_id
            },
            success: function(data){
                $(this).text("You've tagged this");
                $(this).closest('.gl_buttons_holder').toggleClass('gl_buttons_holder gl_buttons_holder_tagged');
                $(this).closest('.gl_buttons').addClass('tagged');
            }
        });
        return false;
    });

  • Halbwegs richtig, vielen Dank – einfache Anführungszeichen und Variablen, doh! Ich starrte und starrte

    – Studiozeit

    6. Februar 2014 um 21:17 Uhr

1018370cookie-checkPost-Variablen durch Ajax übergeben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy