开发者

jQuery/json read parameters from POST in .NET web service

开发者 https://www.devze.com 2023-02-04 01:19 出处:网络
I\'m having trouble figuring out how to read a json string from a POST coming from jQuery(most articles I\'ve seen show how to send the json, but not how to get it from the POST message received by th

I'm having trouble figuring out how to read a json string from a POST coming from jQuery(most articles I've seen show how to send the json, but not how to get it from the POST message received by the web services.

This is the code I've written so far.

On the client side:

<input type="text" id="UserNameText" />
<br />
<input type="password" id="PasswordText" />
<br />
<input type="button" id="Login" value="Login" onclick="DoLogin();" />

<script type="text/javascript" language="javascript">
    function DoLogin() 
    {
        var un = document.getElementById('UserNameText').value;
        var pw = document.getElementById('PasswordText').value;
        var info = "{ 'UserName':'" + un + "', 'Password':'" + pw + "'}";

        $.ajax(
        {
            type: "POST",
            url: "http://localhost:60876/Login.asmx/LoginSpecial",
            dataType: 'json',
            data: info,
            contentType: "application/json; charset=utf-8",
            success: function (msg) { alert(msg.d); },
            error: function (msg) { alert(msg.responseText); }
        });
    }
</script>

on the server side I've got this:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public string LoginSpecial()
{
    // none of these seem to be working
    NameValueCollection parameters = HttpContext.Current.Request.Params;
    string p = parameters["QUERY_STRING"] != null ? parameters["QUERY_STRING"].ToString() : String.Empty;
    string info = HttpContext.Current.Request["info"] != null ? HttpContext.Current.Request["info"].ToString() : String.Empty;
    string data = HttpContext.Current.Request["data"] != null ? HttpContext.Current.Request["data"].ToString() : String.Empty;

    // test json string, need to read from the jquery post
    string json = "{ 'UserName':'test', 'Password':'test'}";

    // the following two lines of code work ok with the test json string above.
    JavaScriptSeri开发者_StackOverflow社区alizer serial = new JavaScriptSerializer();
    Credentials credential = (Credentials)serial.Deserialize(json, typeof(Credentials));

    return "Some json message here";
}

I've set break points and I'm hitting the web service as expected, I just can't figure out how to get the json string from the POST message.


If you want your web service method to work with the submitted JSON object, you'll have to change your method signature to:

[WebMethod]
LoginSpecial(string Username, string Password)
{
}

The JSON object you supply to the data property of the AJAX call has to have property names matching the parameter names of your web service method signature.

if you want to submit a list of parameters, you have to submit an array of objects and create a wrapper .NET object in your web service as explained here:

Using jQuery to POST Form Data to an ASP.NET ASMX AJAX Web Service

Hope that helps.


On server side use the library :

Newtonsoft.Json.Linq => downloaded JSON.net from http://james.networking.com/projects/json-net.aspx

And the code :

        System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream);

        string line = "";

        line = sr.ReadToEnd();

        JObject jo = JObject.Parse(line);

        string something = (string)jo["something"]


Add the parameter to your method,

[WebMethod]
LoginSpecial(string something)
{
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号