Как сделать так, чтобы функция JQuery POST открывала новую страницу? - PullRequest
2 голосов
/ 18 апреля 2010

Я знаю, что кнопка отправки в HTML может отправить форму, которая открывает целевую страницу, но как мне вызвать aJax-вызов jQuery для получения информации POST на новой странице, а также отобразить новую страницу. Я отправляю информацию, которая собирается путем нажатия элементов (которые переключают новый класс с именем «select»), а затем идентификаторы из этих элементов с новым классом добавляются в строку и помещаются на новую страницу. Эта новая страница будет использовать эти данные для предоставления сводки выборов на предыдущей странице. В настоящее время я могу получить его для размещения данных на новой странице PHP, но, похоже, функция ajax просто остается на текущей странице (что отлично подходит для некоторых вещей, но только не для этого), не перенаправляя на новую страницу. как я могу это сделать?

вот раздел скрипта:

//onload function
$(function() {

//toggles items to mark them for purchase
//add event handler for selecting items
$(".line").click(function() {
    //get the lines item number
    var item = $(this).toggleClass("select").attr("name");
    });

$('#process').click(function() {
    var items = [];

    //place selected numbers in a string    
    $('.line.select').each(function(index){
            items.push($(this).attr('name'));
            });

    $.ajax({
            type: 'POST',
            url:  'additem.php',
            data: 'items='+items,
            success: function(){
                $('#menu').hide(function(){
                    $('#success').fadeIn();             
                    });
                }   
            });
    });
    return false;
});

любые указатели были бы великолепны !! спасибо


редактирование: спасибо за помощь, я изменил свой скрипт на:

//onload function
    $(function() {

    //toggles items to mark them for purchase
    //add event handler for selecting items
    $(".line").click(function() {
        //get the lines item number
        var item = $(this).toggleClass("select").attr("name");
        });    

$('#process').click(function() {
    var items = [];

    //place selected numbers in a string    
    $('.line.select').each(function(index){
            items.push($(this).attr('name'));
            });
    $('#items').attr('value',items);
    $('#form').submit()

    });
    return false;
});  

Ответы [ 2 ]

1 голос
/ 18 апреля 2010

Посты Ajax по определению не загружаются на страницу. Но вы можете делать все, что вы хотите в вашем success обработчике. Так что просто измените местоположение документа там:

success: function(){
    $('#menu').hide(function(){
        $('#success').fadeIn();             
    });

    window.location = 'http://www.example.com/elsewhere';
}

Часто POST возвращает HTTP 301 или 302 редирект. В этом случае вы можете получить возвращенную информацию заголовка из объекта XHR, который передается в функции обратного вызова.

complete: function( xhr ) { 
    // assume we got a redirect; the new URL will be in the Location header
    window.location = xhr.getResponseHeader( 'Location' );
}
1 голос
/ 18 апреля 2010

Прежде всего, я не рекомендую использовать ajax здесь, поскольку вы не используете его для тех целей, для которых он предназначен, и вы заставляете его делать перезагрузку.

Вы можете сделать что-то подобное в случае успеха ajax

success: function(){
           window.location = "the new url you wanted to load";       
         } 

Edit:

Почему бы не сделать обычное сообщение с атрибутом действия формы, установленным для страницы, на которую вы хотите опубликовать, и вы можете получить доступ ко всем переменным формы на этой опубликованной странице, или же вы можете объединить или сохранить в массиве все свои значения и сохраните этот массив в скрытой переменной и получите доступ к этой переменной в опубликованном скрипте.

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