2013-02-18 46 views
1

如果我有以下職位呼叫:如何在WebMatrix中的jquery帖子後接收json字符串?

$('#json_form').submit(function (event) { 

      event.preventDefault(); 
      var url = $(this).attr('action'); 
      var datos = { 
       "uno": "lalala", 
       "dos": "jojojo" 
      } 
      var data = JSON.stringify(datos); 

      $.post(url, data, function (resultado) { 
       $('#posted_values').html(resultado); 
      }); 
     }); 

我如何可以接收和處理在CSHTML文件中的JSON對象?我的意思是,我把電話解碼:

if (IsPost) 
    { 
     var json_object = Json.Decode(Request???); 
} 

編輯完成的@MikeBrind答案,來幫助其他有同樣的問題。 爲更復雜的json對象使用解碼的示例。

 $('#json_form').submit(function (event) { 

      event.preventDefault(); 
      var url = $(this).attr('action'); 
      var datos = { 
       "firstName": "John", 
       "lastName": "Smith", 
       "age": 25, 
       "address": { 
        "streetAddress": "21 2nd Street", 
        "city": "New York", 
        "state": "NY", 
        "postalCode": 10021 
       }, 
       "phoneNumber": [ 
        { 
         "type": "home", 
         "number": "212 555-1234" 
        }, 
        { 
         "type": "fax", 
         "number": "646 555-4567" 
        } 
       ] 
      } 

      var data = JSON.stringify(datos); 

      $.post(url, {"person": data}, function (resultado) { 
       $('#posted_values').html(resultado); 
      }); 
     }); 

接收和使用:

@{ 
    dynamic json_object;  
    if (IsPost) 
    { 
     json_object = Json.Decode(Request["person"]); 
     @json_object.firstName<br/> 
     @json_object.lastName<br/>   
     @json_object.address.city<br/> 
     @json_object.address.postalCode<br/> 
     foreach (dynamic phone in json_object.phoneNumber) 
     { 
      @phone.type<br/> 
      @phone.number 
     } 

    }  
} 

回答

1

不要JSON.stringify的數據,如果是這樣的只是鍵/值對。做一個表格後:

$('#json_form').submit(function (event) { 
    event.preventDefault(); 
    var url = $(this).attr('action'); 
    var datos = { 
     "uno": "lalala", 
     "dos": "jojojo" 
    } 
    //var data = JSON.stringify(datos); no need for this 

    $.post(url, datos, function (resultado) { 
     $('#posted_values').html(resultado); 
    }); 
}); 

隨後這些值可從Request["uno"]Request["dos"]

如果你確實需要使用JSON.stringify(你會爲更復雜的數據結構),在JSON在傳輸請求正文,所以你需要從中提取它:Request.InputStream

var reader = new StreamReader(Request.InputStream); 
var json = reader.ReadToEnd(); 
+0

優秀的@Mike。我將使用維基百科中找到的Json對象向顯示此場景的問題添加代碼,我認爲這對其他人是有用的。 – mjsr 2013-02-18 11:19:42