2014-04-28 101 views
2

我正在通過JQuery的Ajax進行POST請求,數據類型定義爲json,包含要發佈到服務器的值,如Username: "Ali"從C#中的POST請求讀取並解析JSON數據

我在處理程序中需要做的是讀取值,將它們反序列化到名爲User的對象。

String data = new System.IO.StreamReader(context.Request.InputStream).ReadToEnd(); 
User user = JsonConvert.DeserializeObject<User>(data); 

調試時的data值如下:

Username=Ali&Age=2....

現在,我敢肯定這是不是JSON,那麼下一行肯定會產生一個錯誤:

"Unexpected character encountered while parsing value: U. Path '', line 0, position 0." 

什麼是從POST請求中讀取JSON數據的正確方法?

客戶端

$.ajax({ 
    type: 'POST', 
    url: "http://localhost:38504/DeviceService.ashx", 
    dataType: 'json', 
    data: { 
     Username: 'Ali', 
     Age: 2, 
     Email: 'test' 
    }, 
    success: function (data) { 
    }, 
    error: function (error) { 
    } 
    }); 
+2

後弦從POST請求返回。 –

+0

@AshokDamani不是'data'的價值嗎? –

+0

是的,這是....... –

回答

4

轉換你的對象到JSON字符串:

$.ajax({ 
    type: 'POST', 
    url: "http://localhost:38504/DeviceService.ashx", 
    dataType: 'json', 
    data: JSON.stringify({ 
     Username: 'Ali', 
     Age: 2, 
     Email: 'test' 
    }), 
    success: function (data) { 
    }, 
    error: function (error) { 
    } 
    }); 
+1

就是這樣。留言Merci! –

0

使用在C#文件...會給你造成你需要...

string username=Request.Form["Username"].ToString(); 

同樣對於其他人...... 我希望這將幫助你

另一個答案或者你可以發送這樣的數據

$.ajax({ 
        url: '../Ajax/Ajax_MasterManagement_Girdle.aspx', 
        data: "Age=5&id=2" 
        type: 'POST', 
        success: function (data) { 

        } 
       }); 

,並獲得在C#

string Age=Request.Form["Age"].ToString(); 
3

這樣的答案我不知道爲什麼你的datastring編碼像一個URL(因爲它似乎)。

但是,這可能會解決這個問題(altough我不知道)

String data = new System.IO.StreamReader(context.Request.InputStream).ReadToEnd(); 
String fixedData = HttpServerUtility.UrlDecode(data); 
User user = JsonConvert.DeserializeObject<User>(fixedData);