Як я можу переадресовувати дані даних?
Як перейти на нову сторінку за допомогою $_POST
?
Як це зробити? Як це робиться і навіщо це робити
Як я можу переадресовувати дані даних?
Як перейти на нову сторінку за допомогою $_POST
?
Як це зробити? Як це робиться і навіщо це робити
$_POST
змінну?
Відповіді:
Існує плагін JQuery, який практично виконує те, що ви намагаєтесь зробити: https://github.com/mgalante/jquery.redirect/blob/master/jquery.redirect.js .
Після включення JQuery та плагіна jquery.redirect.min.js ви можете просто зробити щось подібне:
$().redirect('demo.php', {'arg1': 'value1', 'arg2': 'value2'});
Замість цього використовуйте наступний код у нових версіях JQuery:
$.redirect('demo.php', {'arg1': 'value1', 'arg2': 'value2'});
Сподіваюся, це допомагає!
Ось проста невелика функція, яку можна застосувати де завгодно, якщо ви використовуєте jQuery.
var redirect = 'http://www.website.com/page?id=23231';
$.redirectPost(redirect, {x: 'example', y: 'abc'});
// jquery extend function
$.extend(
{
redirectPost: function(location, args)
{
var form = '';
$.each( args, function( key, value ) {
form += '<input type="hidden" name="'+key+'" value="'+value+'">';
});
$('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit();
}
});
Відповідно до коментарів, я розширив свою відповідь:
// jquery extend function
$.extend(
{
redirectPost: function(location, args)
{
var form = $('<form></form>');
form.attr("method", "post");
form.attr("action", location);
$.each( args, function( key, value ) {
var field = $('<input></input>');
field.attr("type", "hidden");
field.attr("name", key);
field.attr("value", value);
form.append(field);
});
$(form).appendTo('body').submit();
}
});
.appendTo('body')
для мобільних пристроїв ... приклад: $('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit();
ідея, заснована на цій відповіді
value=""
атрибут. Таким чином, якщо значення містить лапки, воно не працює. Сама функція може бути замінений на той , який обізнаний про цитуванні, як тут: stackoverflow.com/a/5533477/1775065
Чому б просто не створити форму з деякими прихованими вхідними даними та не надіслати її за допомогою jQuery? Має працювати :)
До того, як документ / вікно готове, додайте "розширити" до jQuery:
$.extend(
{
redirectPost: function(location, args)
{
var form = '';
$.each( args, function( key, value ) {
form += '<input type="hidden" name="'+value.name+'" value="'+value.value+'">';
form += '<input type="hidden" name="'+key+'" value="'+value.value+'">';
});
$('<form action="'+location+'" method="POST">'+form+'</form>').submit();
}
});
Використання:
$.redirectPost("someurl.com", $("#SomeForm").serializeArray());
Примітка: цей метод не може розміщувати файли.
Я думаю, що це найкращий спосіб це зробити!
<html>
<body onload="document.getElementById('redirectForm').submit()">
<form id='redirectForm' method='POST' action='/done.html'>
<input type='hidden' name='status' value='complete'/>
<input type='hidden' name='id' value='0u812'/>
<input type='submit' value='Please Click Here To Continue'/>
</form>
</body>
</html>
Це буде майже миттєво, і користувач нічого не побачить!
Це призведе до переадресації з опублікованими даними
$(function() {
$('<form action="url.php" method="post"><input type="hidden" name="name" value="value1"></input></form>').appendTo('body').submit().remove();
});
}
функція .submit () автоматично надсилає URL-
адресу, функція .remove () вбиває форму після надсилання
Це потребує роз’яснень. Ваш сервер обробляє POST, який ви хочете перенаправити кудись ще? Або ви хочете перенаправити запит регулятора GET на іншу сторінку, яка очікує POST?
У будь-якому випадку ви можете зробити щось подібне:
var f = $('<form>');
$('<input>').attr('name', '...').attr('value', '...');
//after all fields are added
f.submit();
Напевно, є гарною ідеєю зробити посилання з написом "натисніть тут, якщо не переспрямовано автоматично", щоб мати справу з блокувальними вікнами.
Подібна до наведеної вище відповіді, але написана інакше.
$.extend(
{
redirectPost: function (location, args) {
var form = $('<form>', { action: location, method: 'post' });
$.each(args,
function (key, value) {
$(form).append(
$('<input>', { type: 'hidden', name: key, value: value })
);
});
$(form).appendTo('body').submit();
}
});
чому б просто не використовувати кнопку, а не надсилати. натискання кнопки дозволить вам створити відповідну URL-адресу для перегляду веб-переглядача.
$("#button").click(function() {
var url = 'site.com/process.php?';
$('form input').each(function() {
url += 'key=' + $(this).val() + "&";
});
// handle removal of last &.
window.location.replace(url);
});
Я включив плагін jquery.redirect.min.js у розділ head разом із цим рішенням json для надсилання з даними
<script type="text/javascript">
$(function () {
$('form').on('submit', function(e) {
$.ajax({
type: 'post',
url: 'your_POST_URL',
data: $('form').serialize(),
success: function () {
// now redirect
$().redirect('your_POST_URL', {
'input1': $("value1").val(),
'input2': $("value2").val(),
'input3': $("value3").val()
});
}
});
e.preventDefault();
});
});
</script>
Потім відразу після форми я додав
$(function(){
$( '#your_form_Id' ).submit();
});
Побудуйте та заповніть приховану форму = POST action = "http://example.com/vote" форму та надішліть її, а не взагалі використовуйте window.location.
або
$('#inset_form').html(
'<form action="url" name="form" method="post" style="display:none;">
<input type="text" name="name" value="' + value + '" /></form>');
document.forms['form'].submit();
"розширив" вищевказане рішення цільовим. З якоїсь причини мені потрібна була можливість перенаправити допис на _blank або інший фрейм:
$.extend(
{
redirectPost: function(location, args, target = "_self")
{
var form = $('<form></form>');
form.attr("method", "post");
form.attr("action", location);
form.attr("target", target);
$.each( args, function( key, value ) {
var field = $('<input></input>');
field.attr("type", "hidden");
field.attr("name", key);
field.attr("value", value);
form.append(field);
});
$(form).appendTo('body').submit();
}
});