2013-06-29 3 views
9
<html> 
<head> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>  
<script type="text/javascript"> 
    function DoPost(){ 
     $.post("index.html", { name: "John", time: "2pm" }); 
    } 
    </script> 
</head> 

<body> 
<a href="javascript:DoPost()">GO</a> 

</body> 
</html> 

Я сделал функцию и попытался вызвать эту функцию, внутри этой функции я упомянул URL и данные, упомянутые выше, here. Но, это не работает для меня.перейти на другую страницу с запросом на отправку по ссылке

Примечание: Даже я упомянул в моем почтовом названии, то и я хочу уточнить, что я хочу, чтобы перейти на другую страницу с помощью POST метода с помощью простой гиперссылки.

+0

Вы знаете, что '$ .post' делает запрос' AJAX'? Если вы хотите перейти с помощью запроса 'POST', вы можете использовать форму. – zeroflagL

+0

Хорошо ... но я хочу, чтобы это было в простой ссылке, так что есть способ сделать это. ? – Ravi

+0

Ну, форма проще, чем это решение imho. Используя '$ .post', вы можете взять ответ и записать его в документ, но это не совсем то же самое, что загрузить новую страницу. Таким образом, нет, это невозможно по ссылке или JavaScript. – zeroflagL

ответ

11

Создайте форму html со всеми данными, которые вам нужно отправить, и укажите в качестве действия страницу, необходимую для пересылки пользователя.

<form method="post" id="theForm" action="REDIRECT_PAGE.php"> 

Затем поместите некоторые скрытые поля в эту форму.

<input type="hidden" name="name" value="John"> 
<input type="hidden" name="time" value="2pm"> 
</form> 

Wrap это внутри вашей функции doRedirect и редирект будет работать, пока правильно Предоставляя свои данные POST.

document.getElementById('theForm').submit() 

В качестве примечания, вы можете перенаправить пользователя на .php странице а не .html один, если вам нужно прочитать данные POST. Это зависит от конфигурации вашего сервера, но по умолчанию я не думаю, что вы можете запустить PHP-код внутри .html-файла.

+0

hahaha .... не волнуйтесь, я .. и я не это имел в виду, я просто так сказал, что вы немного опоздали, потому что я уже сделал это. Не потому, что я отправляю его раньше вас ..;) – Ravi

+0

Помните, что doRedirect будет работать только в том случае, если DOM готов ... Неважно, поскольку вы показываете его по ссылке. Я бы рекомендовал разместить форму перед ссылкой, которая отображает функцию doRedirect. До свидания! – Saturnix

-1

Что это значит, что он не работает? Как он может работать, когда вы публикуете результаты на простой странице .html?

Функция $.post является сокращением для $.ajax, которое мне всегда было легче читать и отлаживать! Пожалуйста, взгляните еще раз на ссылку, которую вы указали, и посмотрите примеры в нижней части страницы!

Например:

$.post("test.php", { name: "John", time: "2pm" }); 

Update: Нет, это не должно идти в index.html. Фактически ваш код отправляет почтовые переменные на страницу .html, поэтому в основном это не так. Тем не менее, вы можете делать то, что вы хотите с большим количеством различных решений, увидеть два из них ниже:

  • Вы можете либо добавить done событие на функцию $.post, например:

    $.post("test.php", { name: "John", time: "2pm" }).done(function() { alert("Success, do the redirection here!"); });

  • Или, может быть, может быть перенаправлено с использованием переменных-получателей вместо сообщений? например:

    window.location = "index.php?username=blah&pass=blah"; и обрабатывайте их на странице php.

ps. вышеприведенное решение, очевидно, предназначено для тестирования, если вы пойдете так, как-то вам нужно будет зашифровать ваши данные!

+0

не работает. Когда я нажимаю 'GO', он должен перейти на страницу' index.html', как указано в 'url'. Но ничего не происходит, по моему мнению, он не работает. – Ravi

+0

поэтому используйте решение @Vahe Yepremyan – mkutyba

+0

@matty Я прошу вас, пожалуйста, прочитайте мое сообщение. Потому что, мне нужно отправить запрос, если это невозможно, то, пожалуйста, дайте мне знать. Поскольку решение Vahe - простой javascript для перехода на другую страницу. – Ravi

0

Наконец, я сделал это, но не так, как хотел. Но это полезно для меня.Теперь, разделив для других

<html> 
    <head> 
    <script type="text/javascript"> 
     function DoPost() { 
     document.postlink.submit(); 
     } 
    </script> 
    </head> 

    <body> 
    <a href="javascript:DoPost()">GO</a> 
    <form action="demo.php" name="postlink" method="post"> 
     <input type="hidden" name="name" value="this is my POST data"> 
    </form> 
    </body> 
</html> 
4

Я знаю, этот вопрос почти 4 лет, и есть уже принят ответ, но я хотел бы предоставить альтернативное решение, а также пункт вашей ошибки.

Часть 1: Решение

Стандартное решение для навигации с POST запроса является формой, которую принял ответ использует. Я опишу это, представив решение для программного создания форм с использованием DOM.

var payload = { 
    name: 'John', 
    time: '2pm' 
}; 
var form = document.createElement('form'); 
form.style.visibility = 'hidden'; // no user interaction is necessary 
form.method = 'POST'; // forms by default use GET query strings 
form.action = 'index.html'; 
for (key in Object.keys(payload)) { 
    var input = document.createElement('input'); 
    input.name = key; 
    input.value = payload[key]; 
    form.appendChild(input); // add key/value pair to form 
} 
document.body.appendChild(form); // forms cannot be submitted outside of body 
form.submit(); // send the payload and navigate 

Я использовал index.html как в исходном коде, но я хотел бы воспользоваться советом принято отвечать и использовать PHP принимать и обрабатывать данные POST.

Часть 2: Проблема

Основная проблема с оригинальным решением является то, что он использовал $.post, вспомогательную функцию, построенную на вершине $.ajax. AJAX предназначен для использования при получении данных с сервера и использовании его на текущей странице, вместо перехода на другую страницу.

+1

Я собирался предложить добавить эту строку: 'document.removeChild (form);' однако, вся точка навигации от страницы, так что это действительно не имеет значения: -P. Отличное решение, я буду использовать это в своем проекте. –

0
function js_navigate_with_post(js_url, js_post_params) 
{ 
    var js_html=''; 
    js_html += "<form id='js_navigate_with_post' method='post' action='"+js_url+"'>\n"; 
    js_html += "<input type='hidden' name='js_navigate_with_post' value='true'>\n"; 
    for (var js_key in js_post_params) { 
     if (js_post_params.hasOwnProperty(js_key)) 
     { 
      js_html += "<input type='hidden' name='"+js_key+"' value='"+js_post_params[js_key]+"'>\n"; 
     } 
    } 
    js_html += "</form>\n"; 
    jQuery('body').append(js_html); 
    jQuery('#js_navigate_with_post').submit(); 
} 
+0

выглядит так, как будто это может сработать, но вы должны немного уточнить решение. – muttonUp

Смежные вопросы