2

我目前正在研究一个多步骤查询表单,可以在以下位置找到:http: //jsfiddle.net/xSkgH/47/

我正在尝试通过 jQuery AJAX 提交变量(process.php 将处理处理)并使用 process.php 中名为result的 div最后一步刷新 div 。我怎样才能做到这一点?

到目前为止,我已经设法使用 malsup (http://jquery.malsup.com/form/) 的 jQuery 表单插件来实现这一点,现在需要使用 jQuery AJAX 方法来完成它,作为严格规范的一部分。

这是我一直在使用的代码(使用 jQuery 表单插件):

// prepare the form when the DOM is ready 

$(document).ready(function() { 
var options = { 
    target:        '#result',  
    beforeSubmit:  showRequest,  
    success:       showResponse   
}; 

// bind to the form's submit event 

$('#task5_booking').submit(function() { 
    $(this).ajaxSubmit(options); 
    return false; 
    }); 
});  

// pre-submit callback 

function showRequest(formData, jqForm, options) { 
    var queryString = $.param(formData); 
    // alert('About to submit: \n\n' + queryString); 
}

// post-submit callback 

function showResponse(responseText, statusText, xhr, $form)  {
    $('#last-step').fadeOut(300, function() {
    $('#result').html(responseText).fadeIn(300);
    });
}

非常感谢!

4

2 回答 2

2

用于jQuery.ajax处理最后一步:

http://api.jquery.com/jQuery.ajax/

   else if (whichStep == 'last-step') {
        $.ajax( {
            url:'urltophp.php',
            data: {}, // your data
            dataType: 'json', //your datatype
            type: 'POST',   //or GET
            success: function(r) {
                //your callback here...
            }
        });
    }

编辑:

$('#task5_booking').submit(function(e) { 
    $(e).preventDefault();  //prevent the default form submit()

    var formData = $(this).serialize(); //serialize the form fields data...


    $.ajax( {
        url:'urltophp.php',
        data: formData, // your data
        dataType: 'json', //your datatype
        type: 'POST',   //or GET
        success: showResponse
    });

    //$(this).ajaxSubmit(options); 
    //return false; 
    //}); 
});

改变这个:

function showResponse(responseText, statusText, xhr, $form)  {
    $('#last-step').fadeOut(300, function() {
    $('#result').html(responseText).fadeIn(300);
    });
}

对此:

function showResponse(responseText)  {
    $('#last-step').fadeOut(300, function() {
        $('#result').html(responseText).fadeIn(300);
    });
}
于 2012-04-16T14:08:01.673 回答
1

使用http://api.jquery.com/load/。就像使用 .ajax 一样,只是更容易并符合您的要求。

$('#last-step').load(url, data, function(){})发送一个 post 请求,并用打印到响应 html 中的任何 url 填充“last-step”的 html 内容。

于 2012-04-16T14:15:15.573 回答