2010-04-14 97 views
2

我已經搜索該網站,我發現各種解決方案,其中大部分使用如何防止表單在提交後重定向?

return false; 

問題是,我使用這段代碼提交表單提示:

$(function() { 
    $("#snd").click(function() { 
     var dendar = "http://" + $("#inpt").val() + ":" + $("#pwd").val() + "secretsite.lol/something.xml"; 
     $("#formen").attr("action", dendar); 
     $("#formen").submit(); 
     alert(dendar); 
     return false; 
    }); 
}); 

該警報只是讓我知道,表格已提交..

謝謝你們!

+0

你的意思是你如何阻止表單提交? – Mathew 2010-04-14 16:19:10

+0

我加了一個回覆,但是當你看到你的(過於複雜的代碼)代碼時,我不確定你想要做什麼。主要是由於缺少標記。 – 2010-04-14 16:26:49

+0

沒有阻止它提交,我需要它提交,但沒有重定向。當我點擊表單提交按鈕時,我正被重定向到正在嘗試發佈的XML文件。問題是我收到後數據,所以我的表單被正確發佈,這只是我想要阻止的重定向。 對不起,不清楚.. – Noor 2010-04-14 17:04:29

回答

3

剛剛使用POST的AJAX調用數據處理程序怎麼樣?這聽起來像你想要的。

+0

我不確定,但AJAX只能發送數據到我發佈的同一個服務器上這麼久。如果是這樣,那不是一個選項.. – Noor 2010-04-14 17:02:20

+0

你爲什麼要提交跨服務器?從JavaScript瀏覽器窗口幾乎可以做任何事情,這取決於你想要做什麼。請記住,廣告服務會從客戶端網絡加載廣告。你不認爲服務器檢索所有這些廣告,並將它們注入到頁面中嗎? – jcolebrand 2010-04-14 17:16:01

+0

任何你可以用純HTML完成的事情都可以用javascript完成。如果您現在可以提交給其他服務器,那麼您可以將jquery.ajax發佈到該服務器。 – jcolebrand 2010-04-14 17:18:52

4

您必須在submit()調用的事件處理程序中返回false,而不是點擊處理程序。

$("#formen").attr("action", dendar); $("#formen").submit(
    function() { 
     return false; 
    } 
); 

正如其他人指出的,這將停止表單提交。你想要做的是收集表單數據並使用Ajax調用提交。

$ .post(url,{var1:value1,var2:value2 etc ...});

+0

嘿,謝謝你的回答! 要麼我是愚蠢的,不知道如何拉這個或它不與我的代碼工作。 這完全禁用我的提交,我沒有得到發佈的表單,並且警報也沒有顯示出來(我在返回語句之前放置了警報)。 – Noor 2010-04-14 16:59:52

+0

但是,它正是如此,它會禁用提交完全。顯然你不是在問正確的問題。 – jcolebrand 2010-04-14 17:14:41

+0

對不起。我需要我的表單發送信息到一個網站,而不必重新定向。當我點擊提交按鈕時,我需要它來做這件事,發佈信息並提醒我它已經完成了。 – Noor 2010-04-14 17:26:31

4

你無法阻止重定向,但你可以提交表單到(可能是隱藏的)IFRAME讓你不離開當前頁面

阿賈克斯會更好,如果帖子是在同一臺服務器當前頁面,你是不是發佈文件數據

+0

我會盡力做到這一點,該職位是由一個網站,不屬於我..謝謝! – Noor 2010-04-14 17:00:36

2

使用jQuery 1.4:

$("#formen").live("submit",function(e) { 
    e.preventDefault(); 
} 

這將防止從形式實際提交。然後你可以自由地處理應該發佈的數據(使用ajax,在頁面上打印某些內容......)。

+0

不太確定把它放在哪裏,這是否取代提交代碼行? – Noor 2010-04-14 17:01:14

+0

@noor在你想要的地方添加它,只要確保它被調用(例如在文檔上準備就緒) – marcgg 2010-04-14 19:36:21