2011-06-27 49 views
1

我有頁面的鏈接,我想使用後,而不是默認的重定向,因爲我需要從窗體傳遞一些其他值。我設置的jQuery後的onclick這樣的:ASP.NET MVC發佈與href

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#mytable tfoot a").click(function() { 
        $.post($(this).attr("href"), $("form").serialize()); 
        //return false; if i set that the page does not getting updated 
    }); 
}); 

但它不是完全覆蓋A HREF行爲,因爲第一次發生了什麼是職務行爲,這樣是很好的,但後來越來越形成再次提交。

我的javascript不會完全覆蓋href行爲。

可能有人對此有任何想法嗎?

回答

1

到AJAXify鏈接正確的方法是:

$(function() { 
    $('#mytable tfoot a').click(function() { 
     $.post(this.href, $('form').serialize(), function(result) { 
      alert('success'); 
     }); 
     return false; 
    }); 
}); 

幾件事情要驗證:

  • 您附加$(document).ready.click處理程序,如圖我的片段。
  • 您將從.click處理程序返回false以取消默認操作。
  • 錨點的href指向現有的控制器操作。
  • 當調用動作時不會引發異常。
  • 用FireBug分析是否發送了AJAX請求並且服務器響應了什麼。這將允許您查看可能引發的任何潛在錯誤消息。
+0

@Darin季米特洛夫我設置點擊裏面的文件準備(更新),但如果我把回報假;鏈接停止工作 –

+0

@Vasya Pupkin,我在回答中強調的其他問題呢?最重要的是你在FireBug中看到了什麼? –

+0

@Vasya Pupkin,你看到AJAX請求/響應了嗎?查看網絡選項卡中的XHR。 –

0

return false;對於防止$.post()調用後的鏈接非常重要。

+0

是的,我知道,但在我的情況下,鏈接只是不工作,如果我把返回false; –

+1

當你AJAX化它時,該鏈接應該不會貫穿。這是使用該POST的完整點。如果你在POST之後需要將頁面發送到其他地方,那麼這是一個完全不同的問題。 – jerluc

0

如果您想要發佈到另一個URL,並將該頁面作爲該帖子的一部分轉到該URL,那麼唯一的解決方案是將您的數據放入一個表單內的輸入元素,其行爲就是您希望的頁面張貼到。

你可以像做你一樣做ajax帖子,但是不會將用戶重定向到包含發佈數據的頁面。你很可能會比這要困難得多。

1

你經歷過它不起作用的原因是因爲你沒有做你認爲你正在做的事。

$.post方法不會發布表單,它會在後臺進行AJAX調用。您可以在響應到達時調用的調用中提供回調方法,但由於您沒有回調方法,因此您只需忽略響應,所以似乎沒有任何事情發生。

當你想發佈你不應該使用$.post方法的形式,而不是你應該使用submit方法發送表單:

$(document).ready(function() { 
    $("#mytable tfoot a").click(function(e) { 
    e.preventDefault(); // keeps the link from being activated 
    var form = $("form"); 
    form.attr('action', $(this).attr("href")); 
    form.attr('method', 'post'); 
    form.submit(); 
    }); 
});