7 Stimmen

jQuery onclick übergeben Post-Variablen und Seite neu laden

Kann ich Postvariablen übergeben und eine Seite neu laden, wenn ich auf einen Hyperlink klicke?

Um das klarzustellen, habe ich so etwas wie das hier. <a href="test.php?name=test">Click</a>

Wenn javascript aktiviert ist,

Ich denke, ich kann "event.preventDefault()" verwenden, um die Übergabe als GET-Variable zu unterdrücken.

So jetzt onclick, Name sollte als Post-Variable anstelle von get übergeben werden.

Wenn Javascript deaktiviert ist, Dann sollte das obige funktionieren.

10voto

bobince Punkte 512550

Sie könnten dies tun, indem Sie eine neue form Element und zeigt es auf das href und ruft .submit() darauf.

<a class="postlink" href="test.php?name=test">Click</a>

<script type="text/javascript">
    $('.postlink').click(function() {
        var form= document.createElement('form');
        form.method= 'post';
        form.action= this.protocol+'//'+this.hostname+this.pathname;
        $.each(this.search.slice(1).split(/[&;]/g), function() {
            var ix= this.indexOf('=');
            if (ix===-1) return;
            var input= document.createElement('input');
            input.type= 'hidden';
            input.name= decodeURIComponent(this.slice(0, ix));
            input.value= decodeURIComponent(this.slice(ix+1));
            form.appendChild(input);
        });
        document.body.appendChild(form);
        form.submit();
        return false;
    });
</script>

Oder Sie könnten stattdessen einfach eine AJAX-Anfrage stellen und reload() Sie können die Seite auch nachträglich bearbeiten.

Ich bin mir jedoch nicht sicher, warum Sie das tun sollten. Was nützt ein Link, der in der Regel POSTed ist, außer wenn es nicht ist? (Nicht nur, wenn JS deaktiviert/nicht verfügbar ist oder wenn es sich um eine Suchmaschine handelt, sondern auch, wenn der Benutzer mit der Mitte auf den Link klickt oder versucht, ihn mit der rechten Maustaste als Lesezeichen zu markieren oder was auch immer).

Wenn Sie nur etwas wollen, das sich wie eine Schaltfläche zum Übermitteln eines POST-Formulars verhält, sollten Sie besser ein echtes Formular und eine Schaltfläche zum Übermitteln verwenden und dann CSS verwenden, um es so umzugestalten, dass es wie ein Link aussieht, wenn es das ist, wonach Sie es aussehen lassen wollen.

2voto

Christian Gnoth Punkte 21

Sehr guter Hinweis....

Ich habe zunächst versucht, die Formulardaten über einen Ajax-Post-Aufruf zu senden und die Seite anschließend neu zu laden, aber das hat nicht richtig funktioniert:

var  biq_select_val = jQuery('#biq_search_select').val();
jQuery.post(window.location.href,
        { biq_amazon_item_list_search: biq_select_val},
        function() {window.location.reload();}
    );

Jetzt benutze ich nur noch eine:

jQuery('#biq_amazon_item_list_search_form').submit();

und es funktioniert einwandfrei.

0voto

user277891 Punkte 101

Ich habe etwa 10 Links auf einer Seite. Wenn der Benutzer auf diese Links klickt, muss ein Ajax-Reload stattfinden.

Um das klarzustellen, habe ich etwas Ähnliches.

<a href="test.php?name=one">one</a>
<a href="test.php?name=Two">Two</a>

Wenn javascript aktiviert ist,

Beim Anklicken muss ein Ajax-Laden stattfinden.

Wenn javascript deaktiviert ist, sollte das oben genannte funktionieren.

Ich verwende im Wesentlichen name um einige Werte auf meiner Suchseite einzuschränken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X