Ich versuche, die jQuery POST-Funktion zu verwenden, aber sie verarbeitet die Anforderung im AJAX-Stil. Ich meine, es geht nicht wirklich zu der Seite, auf der ich es sage.
$("#see_comments").click(function() {
$.post(
"comments.php",
{aid: imgnum},
function (data) {
}
);
});
Diese Funktion sollte gehen auf comments.php Seite mit Hilfe Wert in der Hand. Es ist in Ordnung zu posten, aber nicht zu comment.php umzuleiten .
@ Doug Neiner Klarstellung:
Ich habe 15 Links (Bilder). Ich klicke auf einen Link und er lädt mein JavaScript. Das Skript weiß, was
imgnum
ich geöffnet habe. Diesimgnum
möchte ich in der Kommentare.php . Ich muss dieses JavaScript verwenden und kein anderes Mittel kann den Trick tun. Das JavaScript ist obligatorischIhre Methode veröffentlicht den Hilfswert erfolgreich. Aber wenn ich in der comment.php versuche, diesen Wert wiederzugeben, wird nichts angezeigt.
Ich benutze Firebug. In der Konsole wird die Echoanforderung angezeigt, die ich in Schritt (2) erfolgreich durchgeführt habe.
quelle
Antworten:
Ich weiß, was Sie versuchen zu tun, aber es ist nicht das, was Sie wollen.
Verwenden Sie zunächst keine Anforderung , es sei denn, Sie ändern Daten auf dem Server
POST
. Haben nur#see_comments
ein normal sein<a href='/comments.php?aid=1'>...
Wenn Sie verwenden müssen , gehen Sie folgendermaßen vor
POST
, damit die Seite Ihrem Anruf folgt:$("#see_comments").click(function() { $('<form action="comments.php" method="POST">' + '<input type="hidden" name="aid" value="' + imgnum + '">' + '</form>').submit(); });
Wie das eigentlich funktionieren würde.
Erstens
$.post
handelt es sich nur um eine AJAX-Methode, die nicht für eine herkömmliche Übermittlung verwendet werden kannform
, wie Sie sie beschreiben. Um einen Wert veröffentlichen und zur neuen Seite navigieren zu können, müssen wir einenform
Beitrag simulieren .Der Fluss ist also wie folgt:
imgnum
#see_comments
form
mit dem darin enthaltenenimgnum
Wert als verstecktes Feldcomments.php
Seite lädtcomments.php
Seite hat Zugriff auf die veröffentlichte Variable (dh in PHP wäre dies der Fall$_POST['aid']
).quelle
aid
Wert nicht aus der Datenbank, die an die AJAX-Anforderung gesendet wird . Haben Sie nicht Ihre gesamte Funktion veröffentlicht?comments.php
Datei UND leitet gleichzeitig um. Was soll es sonst noch tun?imgnum
kommen. Es ist nur so, dass meine Antwort genau Ihrem Code entspricht, außer der Weiterleitung. Versuchen Sie einfach, den$('form... .submit();
Anruf mit Ihrem auszutauschen,$.post
und prüfen Sie, ob er nicht genau das tut, was Sie möchten.$("#see_comments").click(function () { $('<form action="comments.php" method="POST"/>') .append($('<input type="hidden" name="aid">').val(imgnum)) .appendTo($(document.body)) //it has to be added somewhere into the <body> .submit(); });
quelle
Die Lösung von Doug Neiner ist zwar nicht nur richtig, sondern auch die am umfassendsten erklärte, sie hat jedoch ein großes Problem: Sie scheint nur bei Chrome zu funktionieren.
Ich zappelte eine Weile herum und versuchte, eine Problemumgehung zu finden, und stieß dann auf die zweite Antwort von nopnop77. Der einzige Unterschied ist der zusätzliche Code
appendTo($(document.body))
. Dann habe ich es in Firefox getestet und es hat wie ein Zauber funktioniert. Anscheinend müssen Firefox und IE das temporäre Formular irgendwo im DOM-Body anhängen.Ich musste diese Implementierung für ein Symfony2-Projekt durchführen, da der Pfadgenerator in den
.twig
Vorlagen nur mitGET
Parametern funktioniert und das Durcheinander mit der Abfragezeichenfolge die Sicherheit der App beeinträchtigt. (Übrigens, wenn jemand eine Möglichkeit kennt, .twig-Vorlagen zum Aufrufen von Seiten mit POST-Parametern zu erhalten, lassen Sie es mich bitte in den Kommentaren wissen.)quelle
Ich denke, was Sie fragen, ist, zu 'comments.php' zu gelangen und
aid
mit Wert zu postenimgnum
. Die einzige Möglichkeit, dies zu tun, besteht darin, diesen Wert mit einem Formular einzureichen.Sie können dieses Formular jedoch ausblenden und mit einem beliebigen Klick irgendwo mit jquery senden.
HTML notwendig (irgendwo auf der Seite platzieren):
<form id='see_comments_form' action='comments.php' action='POST'> <input id='see_comments_aid' type='hidden' name='aid' value=''> </form>
js notwendig:
$("#see_comments").click(function(){ $('#see_comments_aid').val(imgnum); $('#see_comments_form').submit(); );
Dies wird zu 'comment.php' umleiten und den richtigen Wert senden
imgnum
(von dem ich annehme, dass Sie von irgendwo anders kommen).quelle
$.post()
Sendet tatsächlich einige Daten an den Server. Es wird keine Umleitung verursacht, es sei denn, Sie tun dies in Ihrem serverseitigen Code, der die POST-Anforderung verarbeitet. Ich kann zwei Lösungen vorschlagen:<a href="comments.php?aid=1">Show Comments</a>
.$(location).attr("href", "comments.php?aid=1");
quelle
hat das Problem nicht genau gelöst. aber hat es geschafft, es zu umgehen. Ich musste viele Änderungen am JS vornehmen, damit dies funktioniert, aber das Kernproblem dieser Frage wurde folgendermaßen gelöst:
$("#see_comments").attr({href: "comments.php?aid='"+imgnum+"'"});
Dadurch wurde der Hilfewert an die URL angehängt, wie @Doug Neiner mir ursprünglich vorgeschlagen hatte. Vielen Dank Doug für die Mühe. Ich schätze wirklich. +1 und akzeptiere deine Antwort für die Mühe.
quelle