2011-08-05 79 views
3

我想從jQuery到我的服務器進行ajax調用。基本上,我希望將請求作爲POST發送,其內容類型爲x-www-form-urlencoded和相應的參數(parameter1 = X & paramter2 = Y & parameter3 = Z)。我希望響應是JSON。集成jQuery AJAX和.NET

服務器環境是.NET。我一直在試驗下面的三種方法,但一直沒有能夠讓人工作得很好。

ASPX - 使用aspx處理並返回JSON,我可以讓它工作,但我需要自己序列化JSON。這是可能的,但我希望有更方便的事情。另外,糾正我,如果我錯了,但我會想象aspx頁面有很多額外的開銷,因爲他們預計不僅僅是執行一個方法,並返回簡單的JSON。

ASMX和WCF - 使用asmx和WCF,我可以得到它返回JSON,但只有當我在請求中發送JSON時。

什麼是用於此請求/響應類型的最佳服務器端「框架」? .aspx,.asmx或WCF?既然我已經能夠至少得到aspx來爲此工作,那麼這是一種合適的方法嗎?

我見過其他產品,通過Web服務公開一個API並使用帶有JSON響應類型的名稱/值查詢字符串請求格式,但這似乎是.NET中難以完成的壯舉。

回答

1

你說得對,ASPX頁面帶來額外的開銷。即使您根本不使用WebForms框架,對ASPX頁面的請求仍然必須過濾整個頁面生命週期。

如果您更喜歡這種低級別方法,請閱讀QueryString參數並使用手動序列化的JSON進行響應,但ASHX HttpHandler可能是最佳解決方案。

個人而言,我更喜歡ASMX服務。發送JSON參數並不是非常困難(當你開始發送嵌套對象或集合時,你可能會這樣做,這通過簡單的鍵/值對發生混亂),並且很好地避免不必要的在每個請求期間反序列化和序列化。

人們會告訴你WCF是正確的解決方案,因爲它更新,但是當你使用jQuery時,.NET 4的WCF目前並不適合。在處理DateTime和Enum類型時它不那麼靈活,並且它具有笨重的Dictionary序列化。 WCF的新WCF Web Api解決了這些問題,但如果你想嘗試一些事情,可以嘗試一下。

0

如果你可以沿着WCF路線走下去,我可以建議你看看微軟的WCF WebAPI項目。這個項目位於WCF之上,在客戶端訪問(.NET代碼或jQuery Ajax)方面提供了一些細節和簡化。 Here是一個使用jQuery進行POST形式urlencoded數據的演練。還有其他演示其他相關任務的演練。

這些服務可以像其他任何WCF服務一樣託管,甚至可以在您的網站的其他位置同一個ASP.NET項目中託管。

目前,該項目正處於早期開發階段,並且存在一些「上線」限制,但根據您的項目需求,這可能對我們有很大的幫助。

1

我用過了。

  • 的.aspx - >剛正是你正在做它的方式
  • .ashx的 - >類似的.aspx除了在頁面生命週期的開銷更少。
  • .asmx & wcf - >在請求中傳遞JSON有什麼問題?
  • MVC - > return JsonResult。這個是我最喜歡的,當我沒有製作一個完整的 API(爲了我使用WCF),而是我只需要一個或兩個請求 來返回JSON。這當然假設整個站點是使用MVC編寫的 ,否則只需幾個調用即可安裝 框架。