[英]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.