2011-01-04 7 views
2

Он видел много ответов о том, как перенаправить на другую страницу после успешного вызова Ajax, но все они используют метод GET. Я бы хотел, чтобы передать мои параметры на новую страницу с помощью метода POST. Как я могу это сделать?Переадресация Ajax с использованием POST

+0

Параметры не сохраняются в запросе POST, как в запросе GET, поэтому вам придется передавать свои параметры другим способом. – Eugene

+0

Извините, просто для того, чтобы уточнить, хотите ли вы перенаправить текущую страницу на новый URL без AJAX, как если бы вы отправляли форму обычно в браузере или хотите, чтобы исходный AJAX POST теперь был направлен на новый URL-адрес, используя другой AJAX POST (вместо GET) в случае 301 Постоянного ответа на перенаправление? – jamiebarrow

ответ

1

Вы не можете программным образом настроить браузер для выполнения запроса POST, только XMLHTTPRequest. Лучшее, что вы можете сделать, это имитировать его, создав новый form элемент данных, которые вы хотите отправить, то вызов submit на нем:

var params = {name: 'lonesomeday', website: 'stackoverflow'}; 

var form = document.createElement('form'); 
form.action = 'http://example.com'; 
form.method = 'post'; 

for (var key in params) { 
    if (params.hasOwnProperty(key) { 
     var field = document.createElement('input'); 
     field.type = 'hidden'; 
     field.name = key; 
     field.value = params[key] 

     form.appendChild(field); 
    } 
} 

document.body.appendChild(form); 
form.submit(); 
+0

Вы можете отправить запрос с помощью метода запроса POST с использованием XMLHttpRequest ... Я думаю, что создание новой формы для отправки является излишним? – jamiebarrow

+0

@ jamiebarrow Я бы возразил против. Выполнение целого XMLHTTPRequest исключительно для того, чтобы получить URL-адрес, чтобы перейти, когда вы могли выполнить всю операцию в одном HTTP-запросе, является излишним. – lonesomeday

+0

Хмм, вчера я читал это по-другому. У меня возникла проблема, заключающаяся в том, что при выполнении AJAX POST (с использованием jQuery.ajax) для URL-адреса, где ответ представляет собой постоянную переадресацию 301, библиотека выполняет запрос GET для нового местоположения. Однако в моем сценарии должен быть POST для нового URL-адреса через AJAX, а не перенаправить текущую страницу обычно на новый URL-адрес. Прочитав это снова, кажется, что O.P. спрашивает, как перенаправить страницу после выполнения обычной AJAX POST, запутался :) Извините, если я тоже смутил других! :) – jamiebarrow

2

Ну я столкнулся этот вопрос раньше, и единственный способ сделать это, кажется, (возможно, я ошибаюсь), определяя функцию обратного вызова успеха AJAX и перенаправляя ее из этой функции обратного вызова. Если вы хотите, вы можете отправить обратно URL-адрес перенаправления в ответ AJAX и прочитать URL-адрес переадресации в функции обратного вызова.

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