JQuery OnClick передать переменные поста и перезагрузить страницу - PullRequest
7 голосов
/ 21 февраля 2010

Могу ли я передать переменные записи и перезагрузить страницу, нажав на гиперссылку?

Чтобы было ясно, у меня есть что-то вроде этого. <a href="test.php?name=test">Click</a>

Если включен JavaScript,

Я думаю, что могу использовать "event.preventDefault ()" для подавления передачи в качестве переменной GET.

Так что теперь на клике, имя должно быть передано как переменная post вместо get.

Если JavaScript отключен, Тогда вышесказанное должно работать.

Ответы [ 3 ]

11 голосов
/ 21 февраля 2010

Вы можете сделать это, создав новый элемент form, наведя его на href и вызвав .submit().

<a class="postlink" href="test.php?name=test">Click</a>

<script type="text/javascript">
    $('.postlink').click(function() {
        var form= document.createElement('form');
        form.method= 'post';
        form.action= this.protocol+'//'+this.hostname+this.pathname;
        $.each(this.search.slice(1).split(/[&;]/g), function() {
            var ix= this.indexOf('=');
            if (ix===-1) return;
            var input= document.createElement('input');
            input.type= 'hidden';
            input.name= decodeURIComponent(this.slice(0, ix));
            input.value= decodeURIComponent(this.slice(ix+1));
            form.appendChild(input);
        });
        document.body.appendChild(form);
        form.submit();
        return false;
    });
</script>

Или вместо этого вы можете просто сделать запрос AJAX и reload() страницу позже, если хотите.

Однако я не уверен, почему вы хотите это сделать. Какая польза от ссылки, которую обычно размещают, кроме случаев, когда это не так? (Не только когда JS отключен / недоступен или когда это поисковая система, но и когда пользователь щелкает среднюю ссылку или пытается щелкнуть ее правой кнопкой мыши или добавить в закладки или что-то еще.)

Если все, что вам нужно, это что-то, что ведет себя как кнопка для отправки формы POST, лучше на самом деле использовать реальную форму и кнопку отправки, а затем использовать CSS для изменения ее стиля, чтобы она выглядела как ссылка, если вы этого хотите похож.

2 голосов
/ 02 августа 2010

Очень хороший намек ....

Сначала я пытался отправить данные формы с помощью Ajax Post, а затем перезагрузил страницу, но она не работала должным образом:

var  biq_select_val = jQuery('#biq_search_select').val();
jQuery.post(window.location.href,
        { biq_amazon_item_list_search: biq_select_val},
        function() {window.location.reload();}
    );

Теперь я использую только:

jQuery('#biq_amazon_item_list_search_form').submit();

и работает нормально.

0 голосов
/ 21 февраля 2010

У меня есть около 10 ссылок на странице. Когда пользователь нажимает на эти ссылки, должна произойти ajax-перезагрузка.

Чтобы было ясно, у меня есть что-то вроде этого.

<a href="test.php?name=one">one</a>
<a href="test.php?name=Two">Two</a>

Если включен JavaScript,

Onclick, загрузка ajax должна иметь место.

Если javascript отключен, то вышеописанное должно работать.

В основном я использую name, чтобы ограничить некоторые значения моей страницы поиска.

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