簡體   English   中英

asp.net jquery新手問題

[英]asp.net jquery newbie question

我有一個包含文件上傳按鈕的網絡表單。

當我單擊按鈕上傳文件時,后面的C#代碼在事件處理程序中包含一些我想在執行jquery之前首先執行的代碼。

<script>
    $(document.ready() {
        $('.uploadButton').click(function() {
            // do some additional processing *AFTER* code behind stuff executes
        });
    }
</script>

// In my ASP.NET C# code behind
protected void uploadButton_Click(object sender, EventArgs e)
{
    // Code to fire off here *FIRST* before jquery executes
}

這樣的事情可能嗎? 我知道我可以在我的JavaScript中實現一個jquery帖子,但是由於我已經布置了大多數代碼(並且正在根據客戶請求更改此代碼),所以我只是想知道是否有可能這樣做。

您不需要使用jQuery點擊處理程序。 將代碼包裝在一個函數中,然后將該函數名稱分配給按鈕的OnClientClick屬性。 您可以返回false以防止回發處理。

http://msdn.microsoft.com/zh-CN/library/system.web.ui.webcontrols.button.onclientclick.aspx

這是不可能的

首先執行OnClick和jQuery事件處理程序,只有在該頁面回發之后,您才可以在服務器中運行代碼。

最好的辦法是使用$.ajax

這里有一些代碼可以幫助您。

在你的代碼后面

[WebMethod]
public static string uploadButton_Click(string name)
{
   return "Good bye World! by" + name ;
}

並在js文件中

$(".uploadButton").click(function(){
   $.ajax({
      type: "POST",
      url: "PageName.aspx/uploadButton_Click",
      data: "{'Name':'Mr.X'}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
          alert(msg.d) // will show up an alert box with Good bye world by Mr.X
      }
      });
});

Ajax是最好的選擇。 如果您不願使用AJAX,那么您可能可以做到這一點(也許是dirty-logic)

在服務器受到攻擊之前,不要使用jQuery。 在你的代碼背后

// In my ASP.NET C# code behind
protected void uploadButton_Click(object sender, EventArgs e)
{
    // Code to fire off here *FIRST* before jquery executes

    string strClientQuery = @"<script type="javascript"> $(document.ready() {
        $('.uploadButton').click(function() {
        // do some additional processing *AFTER* code behind stuff executes
        });
       }  </script>";
    Response.Write(strClientQuery);
}

如果要嚴格將腳本保留在客戶端(即aspx頁面)中,請在aspx中將查詢創建為字符串,並將其作為輸入傳遞給頁面(通過_EventTarget並在代碼后面獲取該字符串並執行響應) 。寫
如果您發現答案有用,請花幾秒鍾對其進行評分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM