具有不同Success函数的Ajax Multiple Forms

时间:2014-09-03 01:25:02

标签: jquery ajax form-submit

感谢StackOverflow的帮助,我能够验证并向不同的操作页面提交两个表单。我需要根据提交的表单更改成功函数。

这是我的javascript:

$("form").each(function() {
$(this).validate({
    submitHandler: function(form) {
        var $form=$(this)
        var data= $form.serialize()

        $.ajax({
            type    : 'POST',
            url     : $(form).attr('action'),
            data    : $(form).serialize(),
            cache   : false,
            dataType: 'text',
            success: function(data){
                    },
        });
        return false; // Temporary
    }
});

这是表单1的成功:

 $("#e1").prepend(data);
 var magnificPopup = $.magnificPopup.instance; 
 magnificPopup.close(); 

这是表格2的成功:

$("#messageTran").html(data);
$("#messageTran").hide();
$("#messageTran").fadeIn(1500);

实现这一目标的最佳途径是什么?我是javascript的新手,但未能找到答案。我尝试使用if else语句传递一个form属性,但没有运气。先感谢您。

1 个答案:

答案 0 :(得分:2)

如您所知,每个操作页面都会将echo信息返回到主页面,该主页面位于AJAX success:功能中。

您可以添加"标题"返回标识哪个操作页面正在发送数据的返回数据,然后使用IF / ELSE结构执行相应的操作。

例如,操作页面first.php可以发送此文本:

echo '1~This is from first.php';

在成功功能中,您可以剥离"标题"字符:

var hh = data.slice(0,1);
var therest = data.slice(2);
if (hh == 1) {
    $("#e1").prepend(therest);
    var magnificPopup = $.magnificPopup.instance; 
    magnificPopup.close(); 
} else {
    $("#messageTran").html(therest);
    $("#messageTran").hide();
    $("#messageTran").fadeIn(1500);
}

jsFiddle Demo


回答一个问题,重新使用JSON而不是手动解析的字符串:

当然可以使用JSON,原理相同。但在简明的答案中解释更具挑战性。对于JSON初学者来说,一个比使用上述方法更大的挑战 - 至少,它一开始对我来说肯定是。由于原理是相同的,这就是我选择传达这个概念的方式。

对于那些寻求使用JSON的演示的人,我可以推荐这些来源:

http://www.fourfront.us/blog/store-html-table-data-to-javascript-array

http://blog.kevinchisholm.com/javascript/associative-arrays-in-javascript

http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/

jquery AJAX and json format

Passing an array from PHP to Javascript using JQuery & JSON

http://xoops.org/modules/news/article.php?storyid=5103