Передача переменных с помощью POST на другую страницу с помощью Jquery - PullRequest
9 голосов
/ 04 декабря 2010

Я относительно новичок в Jquery, и мне было интересно, как один из них будет публиковать переменные на другой странице, а затем перенаправлять?Я использовал функцию ajax, перенаправление работает нормально, но никакие переменные не записываются в POST (они пусты)

function linkWO() {

    $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "LinkTagOut.aspx",
            dataType: "json",
            data: "{id=1}",
            complete:
            function () {
                window.location = "LinkTagOut.aspx";
            }

    });
}

в моем файле aspx

<a href="javascript:void(0);" onclick="return linkWO();"><span>Link</span></a>

Ответы [ 4 ]

3 голосов
/ 04 декабря 2010
$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "LinkTagOut.aspx",
        dataType: "json",
        data: { id: 1 }, // or the string: 'id=1'
        complete:
        function () {
            window.location = "LinkTagOut.aspx";
        }

});

Из документации $. Ajax (опция data):

Данные для отправки на сервер.Он преобразуется в строку запроса, если это еще не строка.Он добавляется в URL для GET-запросов.См. Параметр processData, чтобы предотвратить эту автоматическую обработку.Объект должен быть парой ключ / значение.Если значение является массивом, jQuery сериализует несколько значений с одним и тем же ключом на основе значения традиционной настройки (описанной ниже).

Кроме того, убедитесь, что return false от конца обработчика отправки(или что бы то ни было запускает вызов ajax), чтобы гарантировать, что «нормальное» перенаправление не происходит.

2 голосов
/ 04 декабря 2010

Этот ответ только для быстрого исправления

почему бы вам просто не передать здесь строку запроса

window.location = "LinkTagOut.aspx?variabletopass=test"; 
<form id="target" action="destination.html">
  <input type="text" value="Hello there" />
  <input type="submit" value="Go" />
</form>
<div id="other">
  Trigger the handler
</div>

$('#target').submit(function() {
$.post('ajax/test.html', function(data) {      
});
  return false;
});
0 голосов
/ 10 июня 2013

Если вам нравится меньше кода, сделайте следующее:

  1. включите jquery.redirect.min.js в папку javascript (js).
  2. Загрузить файл ПОСЛЕ JQUERY сценарий загрузки:

    <script type='text/javascript' src='jquery.js'> 
    </script>
    
    <script type='text/javascript' src='jquery.redirect.min.js'>
    </script>
    
  3. Просто замените нужные параметры в следующей строке (копировать / вставить) в коде JavaScript:

    $().redirect('targeturl.html', {'post_var_1': 'value1', 'post_var_2': 'value2'});
    

Это самый простой и быстрый способ, который я нашел для публикации переменных на другой странице без использования тега формы.Удачи!

0 голосов
/ 04 декабря 2010

Посмотрите на параметр "данные" на этой странице документа: http://api.jquery.com/jQuery.ajax/

Ваша проблема в том, что вы пытаетесь передать строку json (и допустимо передать строку), но если вы передаете строку, jQuery ожидает параметризованную строку запроса. Если вы хотите передать объект json, он не должен быть строкой.

Однако, обратите внимание, что объекты json, переданные таким образом, будут преобразованы в параметризованную строку запроса с помощью jQuery, поэтому, если это не неудобно (как в этом случае, когда у вас есть только одно значение), вы можете просто передать его, что Начнем с того, чтобы сохранить скрипт и немного поработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...