jquery非同步呼叫post的一些注意事項,jquery非同步post
1.aspx網頁,只要放在form標籤的html按鈕標籤 input的type="submit",則無論form是否添加 runat="server",點擊它,都會像伺服器控制項一樣觸發回傳給後的.cs檔案處理
例如
<form id="form1"> <div> <input class="subBtn" type="submit" /> </div></form>
2.要使得在aspx網頁中不回傳給後台,則應採用
<form id="form1"> <div> <input class="subBtn" type="button" /> </div></form>
使用這種方式才能被頁面內的jquery得到並採用post等非同步方式傳送資料到指定後台
3.asp.net中的<asp:label>標籤最終在瀏覽器端表現的是<span>標籤形式,如將傳回的資料賦給它或從它那裡得到資料,需要使用$("").text()方式;
asp.net中的<asp:TextBox>標籤最終在瀏覽器端表現的是<input>標籤形式,如將傳回的資料賦給它或從它那裡得到資料,需要使用$("").val()方式;
最後表現形式可以在產生頁面查看原始碼來得到
4.調試:我的調試方式是 visual studio 加.cs代碼斷點+firefox的firebug斷點的方式,兩者可以協同配合,例如,點擊input類型為button標籤,調用背景加入斷點的ashx檔案,跳過斷點後,可進入在firebug中的斷點,進行調試
(微軟等瀏覽器使用過,但感覺還是不如firefox的firebug好用,至少在查看布局和相關的css等方面後者更好用)
5.如在ashx檔案中使用到session的,則要進行特別的處理
在這裡引用一篇文章:
在一般交易處理頁面,可以輕鬆的得到 Request,Response對象,從而進行相應的操作,如下:
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;
但是要得到 Session的值就沒有那麼簡單了。比如你要在ashx得到儲存在Session中的登入帳號Session["userAccount"]
如果你只是context.Session["userAccount"]的話是會報 “未將對象引用設定到對象的執行個體”的異常
所以,如果要想取Session中的值 ,需要如下所示
1、引入 命名空間:
using System.Web.SessionState;
2、實現IRequiresSessionState介面,具體如下
/// <summary>
/// $codebehindclassname$ 的摘要說明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class AddUserInfo : IHttpHandler,IRequiresSessionState //就是這樣顯示的實現一下,不用實現什麼方法
{
public void ProcessRequest(HttpContext context)
{
//...
//這樣你就可以如下 操作了
if(context.Session["userAccount"] != null)
{
string account = context.Session["userAccount"].ToString();
}
//...繼續下面的代碼
}
}