[英]Capture all links including form submission
我想知道如何使用jQuery捕獲頁面上的所有鏈接。 這個想法類似於Facebook。 在Facebook中,如果單擊鏈接,它將捕獲該鏈接並使用ajax加載相同的鏈接。 只有在新標簽頁等中打開鏈接時,它才會使用常規調用加載頁面。
關於如何實現這種功能的任何線索? 確定捕獲鏈接應該不是問題,但是捕獲表單提交然后通過ajax提交整個數據然后顯示結果呢?
有沒有已經存在的插件?
感謝您的時間。
亞歷克
您絕對可以做到這一點。
我有一種以這種方式處理的表格。 它使用上面提到的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();
});
}
});
表單插件可以將常規表單轉換為Ajax表單:
$("#myForm").ajaxForm(
{beforeSubmit: validate, success: showResponse} );
但是,對於任意形式,將很難執行您想要的操作。 如果表單使用驗證或由Ajax提交,該怎么辦? 鏈接同樣適用。 如果有一些JavaScript導航腳本(window.location =網址)怎么辦? 如果您無法完全控制該頁面,則很難進行所需的操作。
通常,像facebook這樣的頁面會分別對每個事件和每種形式進行編碼,因為通常為每個單個操作/一組操作設置服務器端文件。 我懷疑是否只有一種使用插件轉換頁面的干凈方法。 如果是這樣,我會發現很多開銷。
您可以手工完成,但同樣是濫用Ajax。 這不是閃存,並且在所有服務器通信中使用ajax時會遇到很多問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.