ajaxpro用法小結

來源:互聯網
上載者:User

這幾天把項目中用到的ajaxpro方法學習總結了一下,也參考了網上的一些資料

一、簡介

  ajax(asynchronose javascript+xml)應用可以僅向伺服器發送並取回必需的資料,它使的

SOAP或其他基於XML的web service介面,並在用戶端採用javascript處理來自伺服器的響應。

因為在伺服器和瀏覽器之間交找的資料大量減少,結果我們就能看到響應更快的應用。同時處理工作可以發出請求的用戶端機器上完成,所以web伺服器的處理時間也減少了。

  Ajax應用程式的優勢在於:

1通過非同步模式,提升了使用者體驗

2最佳化了瀏覽器和伺服器之間的傳輸,減少了不必要的資料往返,減少了頻寬的佔用

3Ajax引擎在用戶端運行,承擔了一部分本來由伺服器承擔的工作,從而減少了大使用者量下的伺服器負載

二、配置

Ajax.net有AjaxPro.dll和Ajax.dll兩個版本,這兩個版本在使用上雖然差不多,但還是有區別的,主要的區別如下:

web.config設定檔不一樣

(1)web.config設定檔不一樣

ajax.dll的設定檔的寫法為

<add verb="post,get" path="ajax/*.ashx" type="ajax.pagehanderfactory,ajax"/>

ajaxpro.dll的醋置檔案寫法為

<add verb="*" path='ajaxpro/*.ashx" type="ajaxpro.ajaxhanderfactory,ajaxpro"/>

(2)調用伺服器方法的時候方式 不一樣,很多朋友就是因為這個原因,發現命名空間找不到或者對象未定義

調用ajax.dll的時候調用伺服器方法不要加命名空間

應用ajaxpro.dll的時候,調用伺服器方法需要加命名空間

ajax.dll為

var response=Web.GetServermethod();

alert(response.value);

ajaxpro.dll為

var response=web.test.getserverMethod();

alert(response.value);

三、使用步驟

1,首先下載ajaxpro組件。並將ajaxpro.dll引用到網站

修改webconfig。在<system.web>元素中添加以下代碼

 <httpHandlers>
<add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>/*這裡就是註冊的代碼*/
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpHandlers>

 

3對ajaxpro在頁page_load事件中進行運行註冊。如

protected void Page_Load(object sender, EventArgs e)
{
Response.Expires = -1;//清除頁面緩衝
AjaxPro.Utility.RegisterTypeForAjax(typeof(ZHGL_KHListAddandEdit));//將此後台頁面類,註冊到前台
if (!this.IsPostBack)
{

}
}

4伺服器方法的註冊

[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
//或者[AjaxPro.AjaxMethod()]
public DataTable DataBingCity(string prcID)
{
return DBUtility.DbHelperSQL.Query("select * from GG_City where ProvinceID=" + prcID + "").Tables[0];
}

使用者頁面js調用

//省市二級聯動
function GetCity(prcID) {
form1.ddlCity.length = 1;
var rsl = InvestCallSys.SeatMange.ZHGL_KHListAddandEdit.DataBingCity(prcID).value;//寫上完整的引用空間+類名+伺服器端註冊函數
if (rsl != null && typeof (rsl) == "object") {
for (var i = 0; i < rsl.Rows.length; i++) {
op = new Option(rsl.Rows[i]["Name"], rsl.Rows[i]["Name"]);
form1.ddlCity.options.add(op);
}
}
}

目前項目中用到最多的就是這種形式,之前還有一種是ExtJs方法,這是他們的官方網站http://extjs.org.cn/ 

寫到這裡我們再來看一下silverlight中,背景程式是如何和前台js互相操作的

public Container()
{
InitializeComponent();
VarList.Container = this;
txtWidth.Text = this.container.Width.ToString();
txtHeight.Text = this.container.Height.ToString();
HtmlPage.RegisterScriptableObject("xml", this);//註冊一個可以被指令碼調用的當前頁面的對象執行個體
if (HtmlPage.Window.GetProperty("GetValue") != null)//檢驗頁面指令碼是否存在該scripobject對象
HtmlPage.Window.Invoke("GetValue");
Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_FullScreenChanged);
}

這是一個xaml頁面載入時候執行個體化事件

這裡的htmlpage是一個靜態類(允許訪問和操作瀏覽器的文件物件模型(DOM)不同與(BOM瀏覽器物件模型)嘿嘿

這個類中可以將當前類註冊到前台,取名為xml

這裡跟ajaxpro類似,還需要將你要調用的後台方法前加屬性

[ScriptableMember]
public void SetNameAndXml(string xml)
{
if (!string.IsNullOrEmpty(HtmlPage.Document.QueryString["wfName"]))
wfname = HttpUtility.UrlDecode(HtmlPage.Document.QueryString["wfName"]);
if (!string.IsNullOrEmpty(HtmlPage.Document.QueryString["wfEntity"]))
_entitycode = HtmlPage.Document.QueryString["wfEntity"];
inputxml(xml);
}

然後前台頁面調用

function GetValue() {
var xaml = $get('Xaml1'); //window.dialogArguments.getxml()
xaml.content.xml.SetNameAndXml(window.dialogArguments.getxml());
}

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.