Передача переменных с POST на другую страницу с помощью Jquery

Я относительно новичок в Jquery, и мне было интересно, как одна переменная post на другую страницу, а затем перенаправить? Я использовал функцию 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 ответов


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

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

window.location = "LinkTagOut.aspx?variabletopass=test"; 

код с сайта jquery

<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;
});

$.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";
        }

});

С $.документация Аякс ():

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

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


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

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

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


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

  1. включить С помощью jQuery.перенаправлять.минута.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'});
    

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