捕获所有链接,包括表单提交

时间:2009-05-14 06:45:56

标签: javascript jquery

我想知道如何使用jQuery捕获页面上的所有链接。这个想法与Facebook类似。在Facebook中,如果您单击链接,它会捕获链接并使用ajax加载相同的链接。只有当您在新标签页等中打开链接时,才会使用常规电话加载页面。

有关如何实现此类功能的任何线索?我确定捕获链接不应该是一个问题,但是捕获表单提交然后通过ajax提交整个数据然后显示结果呢?

是否有任何已经存在的插件?

感谢您的时间。

3 个答案:

答案 0 :(得分:1)

艾力,

你绝对可以这样做。

我有一个以这种方式处理的表单。它使用上面提到的jquery表单插件kgiannakakis。下面的示例javascript显示了它的工作原理。

$("form").ajaxForm({
    beforeSubmit: function(){
        //optional: startup a throbber to indicate form is being processed 
        var _valid = true;
        var _msg = '';
        //optional: validation code goes here. Example below checks all input
        //elements with rel attribute set to required to make sure they are not empty
        $(":input [rel='required']").each(function(i){
            if (this.value == '') { 
                _valid = false;
                _msg += this.name + " may not be empty.\n";
                $(this).addClass("error");       
            }
        });
        alert(_msg);
        return _valid; 
    },
    success: function(response){
        //success here means that the HTTP response code indicated success
        //process response: example assumes JSON response
        $("body").prepend('<div id="message" class="' + response.status + '"></div>');
        $("#message").text(response.message).fadeIn("slow", function(){
                $(this).fadeOut("slow").remove();
        });
    }
});

答案 1 :(得分:0)

Form plug-in可以将常规表单转换为Ajax表单:

$("#myForm").ajaxForm(
   {beforeSubmit: validate, success: showResponse} );

对于任意形式,很难做到你想要的。如果表单使用验证或由Ajax提交开始,该怎么办?同样的事情适用于链接。如果有一些javascript导航脚本(window.location = Url)怎么办?如果您无法完全控制页面,则很难做到您想要的。

答案 2 :(得分:0)

通常像facebook这样的页面,每个事件和每个表单都单独编码,因为服务器端文件通常是为每个操作/操作组设置的。我怀疑是否会有一个简洁的方法来转换只有一个插件的页面。如果是的话,我会看到很多开销。

你可以手动完成,但是再次滥用Ajax。这不是闪存,并且使用ajax进行所有服务器通信会遇到很多问题。

  • 缺乏历史跟踪。
  • 注意并发事件及其结果。
  • 与用户沟通页面正在发生变化。
  • 关闭了javascript的用户。
  • 还有更多......