не-AJAX jQuery POST запрос
Я пытаюсь использовать функцию jQuery POST, но она обрабатывает запрос в стиле AJAX. я имею в виду, что на самом деле он не собирается на страницу, которую я говорю ему идти.
$("#see_comments").click(function() {
$.post(
"comments.php",
{aid: imgnum},
function(data){
});
});
эта функция должна перейти к комментариям.php страница с помощью значения в руке. его размещение штраф, но не перенаправление на комментарии.РНР.
@Doug Neiner
уточнение:
1. У меня есть 15 ссылок (изображений). я нажимаю на ссылку, и она загружает мой javascript. JS знает, что я открыл wat imgnum. этот imgnum я хочу в комментариях.РНР. я должен использовать этот JavaScript и никакие другие средства могут делать трюк. JS является обязательным.
2. ваш метод успешно публикует значение помощи. но в комментариях.php когда я пытаюсь повторить это значение, он ничего не отображает.
3. Я использую Firebug. в консоли он показывает Эхо-запрос, который я сделал в шаге (2) успешно.
6 ответов:
Я знаю, что вы пытаетесь сделать, но это не то, что вы хотите.
во-первых, если вы не изменение данные на сервере, не используйте
POST
запрос. Просто есть#see_comments
нормальный<a href='/comments.php?aid=1'>...
если вы есть использовать
POST
, затем сделайте это, чтобы заставить страницу следовать вашему вызову:$("#see_comments").click(function() { $('<form action="comments.php" method="POST">' + '<input type="hidden" name="aid" value="' + imgnum + '">' + '</form>').submit(); });
как это будет на самом деле работать.
первый
$.post
и только метод "Аякс" и не может быть использован, чтобы сделать традиционныйform
представить, как вы описываете. Итак, чтобы иметь возможность публиковать значение и перейдите на новую страницу, нам нужно имитироватьform
пост.таким образом, поток выглядит следующим образом:
- вы нажимаете на изображение, и ваш JS-код получает
imgnum
- далее, кто-то нажимает на
#see_comments
- мы создаем временную
form
Сimgnum
значение в нем, как скрытая поле- мы отправляем эту форму, которая публикует значение и нагрузки
comments.php
страница- код
comments.php
страница будет иметь доступ к опубликованной переменной (т. е. в PHP это будет$_POST['aid']
)
$("#see_comments").click(function () { $('<form action="comments.php" method="POST"/>') .append($('<input type="hidden" name="aid" value="' + imgnum + '">')) .appendTo($(document.body)) //it has to be added somewhere into the <body> .submit(); });
хотя решение Дуга найнера не только правильно, но и наиболее полно объяснено, у него есть одна большая проблема: похоже, он работает только в Chrome.
Я некоторое время ерзал, пытаясь определить обходной путь, а затем наткнулся на второй ответ nopnop77. Единственное отличие-это дополнительный код
appendTo($(document.body))
. Затем я проверил его в firefox и он работал как шарм. По-видимому, Firefox и IE должны иметь временную форму прилагается где-то в теле дома.Я должен был сделать эту реализацию для проекта Symfony2, так как генератор пути внутри
.twig
шаблоны будут работать только сGET
параметры и возня со строкой запроса нарушали хаос с безопасностью приложения. (Кстати, если кто-то знает способ получить .шаблоны twig для вызова страниц с параметрами POST, пожалуйста, дайте мне знать в комментариях).
Я думаю, что вы просите это сделать в комментариях.php ' и posting
aid
со значениемimgnum
. Единственный способ сделать это-отправить это значение с помощью формы.тем не менее, вы можете сделать эту форму скрытой и отправить ее на произвольный щелчок где-нибудь с помощью jquery.
html необходимо (поставить в любом месте на странице):
<form id='see_comments_form' action='comments.php' action='POST'> <input id='see_comments_aid' type='hidden' name='aid' value=''> </form>
js необходимо:
$("#see_comments").click(function(){ $('#see_comments_aid').val(imgnum); $('#see_comments_form').submit(); );
это перенаправит на ' комментарии.php ' и отправить правильное значение
imgnum
(что я предполагаю вы получаете откуда-то еще).
на самом деле
$.post()
отправляет некоторые данные на сервер. Это не вызывает никакого перенаправления, если вы не сделаете это в своем коде на стороне сервера, который обрабатывает запрос POST. Я могу предложить два решения:
- чтобы перейти на страницу комментариев, вместо использования jQuery post, вы можете просто использовать тег 'anchor' -
<a href="comments.php?aid=1">Show Comments</a>
.- или если вы хотите пройти через JQuery, вы можете использовать этот фрагмент кода:
$(location).attr("href", "comments.php?aid=1");
точно не решить эту проблему. но все же удалось обойти его. мне пришлось сделать много изменений в JS, чтобы сделать эту работу, но основная проблема этого вопроса была решена следующим образом:
$("#see_comments").attr({href: "comments.php?aid='"+imgnum+"'"});
это добавило значение aid к URL, как @Doug Neiner первоначально предложил мне сделать. Большое спасибо Дагу за все усилия. Я действительно ценю это. +1 и принять к вашему ответу за усилия.