如何从外部服务器调用C#Web Service中的JSON方法

时间:2014-04-28 15:27:59

标签: c# javascript json web-services cross-domain

我如何在HTML5 / JavaScript网站中使用asp.net Web服务(在c#中)? 并且Web服务与客户端不在同一站点中,因此它将是跨域请求。

1 个答案:

答案 0 :(得分:0)

我在网络编程方面有一点经验,在将所有我的asp.net页面移动到HTML5和JS以获得更快的界面时,我真的很难将我的web服务连接到js,JSON就是答案,而且信息收到从2Kb下降到128字节,所以在移动设备上它有点用处

第一个/服务器端

<强> mywebservice.asmx

下一个网络服务将托管在Site.com网站

然后地址为“Site.com/MYWS.asmx/JSONMethod”

[WebService(Namespace = "http://...")]
[System.Web.Script.Services.ScriptService]
public class MYWS
{
    [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public string JSONMethod(/*ParType ParName, ParType ParName2,.. etc*/)
        {
                List<object> tempobjects = new List<object>();
                tempobjects.Add(new { ID = id, Val = val /*more params=> ParName= "ParValue", etc..*/ });

                var retVal = new JavaScriptSerializer().Serialize(tempobjects.ToArray());

                Context.Response.ContentType = "application/json";
                var p = "";
                if (Context.Request.Params.AllKeys.Contains("callback") == true)
                    p = Context.Request.Params["callback"].ToString();
        Context.Response.Write(string.Format(CultureInfo.InvariantCulture, "{0}({1})", p, retVal));
        }
}

第二/客户端

<强> myJS.js

function MyJSMethod(){
$.ajax({
    url: "Site.com/MYWS.asmx/JSONMethod",
    data:{ParName: "parValue"/*, ParName2... etc*/},
    type:"GET",
    dataType:"jsonp" //if the method
    })
    .done(
        function(data){
            //Do what you need with the json data retrieved
            //... CODE HERE ...

            //In case you need to call a method from another js being used
            //window["JSmethod"](data)//if the json received is needed
        }
    ).fail(function(jqXHR, textStatus, errorThrown ){
    alert(jqXHR);
    alert(textStatus);
    alert(errorThrown);
    });
}

希望这适合你,因为这对我有用。 祝你好运,编码愉快。

-Poncho