如何創建返回JSON格式數據的ASP.NET Web服務?ASP.NET中的JSON WebService
回答
要理解的最重要的事情是知道如何以JSON格式表示數據。 請參考http://www.json.org/瞭解更多信息。
一旦你理解了這一點,那麼剩下的部分就非常簡單了。
請查看以下URL以查找相同的示例。
http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=264 http://code.msdn.microsoft.com/JSONSampleDotNet
http://www.phdcc.com/xml2json.htm
我建議jQuery庫這一點。它是一個輕量級豐富的庫,支持調用Web服務,處理json數據格式輸出等。
請參閱www.jquery.com獲取更多信息。
.NET 3.5支持內置。對於.NET 2.0,需要額外的庫。我用了Jayrock圖書館。
我最近發佈了一個在瀏覽器中使用純Javascript的應用程序(即使用AJAX技術,但不使用Microsoft AJAX或Scriptaculous等),這些應用程序與後端的Microsoft web服務結合在一起。當我開始寫這篇文章的時候,我對.NET的世界很陌生,並且被所有的框架感染得不堪重負!所以我有一個衝動,使用一些小型圖書館而不是非常大的框架。
在javascript應用程序中,我調用了這樣的Web服務。它直接讀取Web服務的輸出,刪除非JSON部分,然後使用https://github.com/douglascrockford/JSON-js/blob/master/json2.js解析JSON對象。
這不是一個標準的方法,但是很容易理解,並且可能對您有價值,無論是使用還是僅用於瞭解Web服務和JSON。
// enclosing html page has loaded this:
<script type="text/javascript" src="res/js/json2.js"></script>
// Invoke like this:
// var validObj = = callAnyWebservice("WebServiceName", "");
// if (!validObj || validObj.returnCode != 0) {
// alert("Document number " + DocId + " is not in the vPage database. Cannot continue.");
// DocId = null;
// }
function callAnyWebservice(webserviceName, params) {
var base = document.location.href;
if (base.indexOf(globals.testingIPaddr) < 0) return;
gDocPagesObject=null;
var http = new XMLHttpRequest();
var url = "http://mywebserver/appdir/WebServices.asmx/" + webserviceName;
//alert(url + " " + params);
http.open("POST", url, false);
http.setRequestHeader("Host", globals.testingIPaddr);
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http.setRequestHeader("Content-Length", params.length);
// http.setRequestHeader("Connection", "close");
//Call a function when the state changes.
http.onreadystatechange = function() {
if (http.readyState == 4) {
if (http.status == 200) {
var JSON_text = http.responseText;
var firstCurlyQuote = JSON_text.indexOf('{');
JSON_text = JSON_text.substr(firstCurlyQuote);
var lastCurlyQuote = JSON_text.lastIndexOf('}') + 1;
JSON_text = JSON_text.substr(0, lastCurlyQuote);
if (JSON_text!="")
{
//if (DEBUG)
// alert(url+" " +JSON_text);
gDocPagesObject = eval("(" + JSON_text + ")");
}
}
else if (http.readyState == 4)
{alert(http.readyState + " " + http.status + " " + http.responseText)}
}
}
http.send(params);
if (gDocPagesObject != null) {
//alert(gDocPagesObject.returnCode + " " + gDocPagesObject.returnString);
return gDocPagesObject;
}
else
return "web service unavailable: data not ready";
}
在我們的項目的要求是如下 - 在服務器上的ASP.NET 2.0和純JavaScript的瀏覽器(不JQuery的庫或.NET AJAX)
在在這種情況下,服務器端,只需將webmethod標記爲使用JSON即可。需要注意的是輸入和輸出PARAMS是JSON格式
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public String Foo(String p1, String p2)
{
return "Result: p1= " + p1 + " p2= " + p2;
}
在JavaScript端,使用常規的XmlHttpRequest對象,請確保您格式化輸入PARAMS作爲JSON和做輸出PARMS的「EVAL」。
var httpobj = getXmlHttpRequestObject();
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject()
{
if (window.XMLHttpRequest)
return new XMLHttpRequest();
else if(window.ActiveXObject)
return new ActiveXObject("Microsoft.XMLHTTP");
}
CallService()
{
//Set the JSON formatted input params
var param = "{'p1' : 'value1', 'p2' : 'value2'}";
//Send it to webservice
if(httpobj.readyState == 4 || httpobj.readyState == 0)
{
httpobj.open("POST", 'service.asmx/' + 'Foo', true);
//Mark the request as JSON and UTF-8
httpobj.setRequestHeader('Content-Type','application/json; charset=utf-8');
httpobj.onreadystatechange = OnSuccess;
httpobj.send(param);
}
}
OnSuccess()
{
if (httpobj.readyState == 4)
{
//Retrieve the JSON return param
var response = eval("(" + httpobj.responseText + ")");
}
}
- 1. ASP.NET中的Jquery Webservice
- 2. 如何將JSON發送到Asp.NET Webservice?
- 3. 與JSON傳遞數據到ASP.Net webservice
- 4. JSon Webservice
- 5. jquery/json中的Webservice路徑
- 6. ASP.NET webservice
- 7. ASP.NET Webservice
- 8. json webservice和uitableview
- 9. asp.net identity webservice android
- 10. cgi和asp.net webservice
- 11. asp.net webservice OnUnload?
- 12. 調用asp.net webservice
- 13. GnuPG + Webservice + ASP.NET
- 14. 在asp.net中調用webservice ajax
- 15. JSON從ASP.NET WebService的返回是不夠的
- 16. json webservice安全性
- 17. Webservice C#JSON到Arduino
- 18. 返回JSON數據的webservice
- 19. 輸出JSON的簡單Webservice
- 20. 從iphone/ipad的json webservice
- 21. JAX-WS webservice的JSON輸出?
- 22. jqGrid - ASP.NET WebService顯示空白的JSON數據源
- 23. ASP.NET 4.0從WebService的JSON - 刪除逃生斜線
- 24. ASP.NET WebService正在用XML標記包裝我的JSON響應
- 25. PhoneGap - 調用asp.net webservice
- 26. asp.net webservice jquery textbox autocomplete
- 27. ASP.NET webservice API安全
- 28. asp.net webservice jquery populate textbox
- 29. 帶ASP.Net webservice的結構圖
- 30. webservice的錯誤500 asp.net
哪一部分需要幫助 - 在JSON中創建Web服務或編碼?或兩者?他們幾乎是分開的問題。 – dkretz 2008-11-28 05:50:15