【问题标题】:Ajax Multiple Forms with different Success functions具有不同 Success 功能的 Ajax 多种表单
【发布时间】:2014-09-03 01:25:01
【问题描述】:

感谢 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 语句传递表单属性,但没有运气。先感谢您。

【问题讨论】:

    标签: jquery ajax form-submit


    【解决方案1】:

    如您所知,每个操作页面都会将echo 信息返回到主页,这在AJAX success: 函数内部可用。

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

    比如action pagefirst.php可以发送这个文本:

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

    在success函数中,你可以去掉那个“header”字符:

    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

    【讨论】:

    • 效果很好!我不知道切片功能。非常感谢您的帮助。
    • 事实上,你可以使用 slice、substring 或 substr——这三个都可以。有关更多信息,请参阅 Ben Nadel 的文章。 bennadel.com/blog/…
    • 老实说,这似乎不是一个非常干净的解决方案。他现在需要将不同的形式映射到数字。无论如何,是否可以使用 key:value 解决方案来做到这一点?例如。 JSON 对象而不是字符串?
    • @Johannes 请参阅我的回答。但请随时交流您自己的答案——我自己通过为长期关闭的答案添加额外贡献而获得了数百分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2018-04-22
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2011-10-22
    相关资源
    最近更新 更多