使用一个从独立的html页面返回json的asp.net Web服务

时间:2008-12-20 20:07:48

标签: asp.net web-services json

我在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页面吗?

4 个答案:

答案 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