我在asp.net中开发了一个Web服务,并且能够从项目内的aspx页面进行测试,并且可以很容易地显示以JSON格式返回的信息。
我现在需要从独立的html页面使用Web服务。
有人有经验吗?我对被替换这个
的部分感到困惑<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="~\MyService.asmx" />
</Services>
</asp:ScriptManager>
如果使用直接的html和javascript无法实现这一点,有人可以向我展示一个独立的php页面吗?
答案 0 :(得分:4)
请看这个链接:
http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/
使用JQuery
www.jquery.org
基本上,您可以使Web服务脚本可调用,只是Web服务定义中的一个属性,您可以:
$.ajax({
type: "POST",
url: "~/MyService.asmx/MyMethod",
data: "{parameterName:'" aStringArgument + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
var data = msg.d
// Now var is an object with properties just like your object
}
});
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以使用Javascript访问您的网络服务。
例如 - 如果你有一个像这样定义的json webservice:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public String Foo(String p1, String p2)
{
return "Hello World";
}
你可以这样称呼:
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);
}
}
//Called on successfull webservice calls
OnSuccess()
{
if (httpobj.readyState == 4)
{
//Retrieve the JSON return param
var response = eval("(" + httpobj.responseText + ")");
}
}
答案 3 :(得分:0)
如果您不想使用ScriptManager(为您的页面添加超过100k的JS),您可以使用this method to use jQuery to connect to your web services。