2010-07-15 67 views
0

我正在使用以下腳本發佈到端點,它正在服務器上觸發斷點,所以我知道路由是正確的。Jquery ajax發佈到MVC2操作

$(document).ready(function() { 
      var o = new Object(); 
      o.message = 'Hi from the page'; 
      $.ajax({ 
       type: 'POST', 
       contentType: 'application/json;', 
       data: JSON.stringify(o), 
       dataType: 'json', 
       url: 'home/PingBack', 
       success: function (result) { 
        alert(result.success); 
       } 
      }); 
     }); 

服務器上的端點如下所示。

public JsonResult PingBack(MHolder message) 
     { 
      return Json(new { success = "steve"}); 
     } 

和Model看起來像這樣。

public class MHolder 
    { 
     public string message { get; set; } 
    } 

我敢肯定,在過去的價值觀已經自動綁定到模型,但我似乎無法得到任何的約束大氣壓!即使我只是把這個值作爲一個字符串傳遞,我確定我錯過了任何想法是件愚蠢的事情?

回答

2

有幾件事要注意。您正在將請求作爲JSON字符串發送(contentType: 'application/json'JSON.stringify(o)),同時在服務器上您期待MHolder類型的對象。默認模型聯編程序不會執行此轉換。你要麼需要編寫能夠反序列化JSON的自定義模型粘結劑回到一個MHolder實例或發送請求作爲key=value對(不字符串化):

var o = new Object(); 
o.message = 'Hi from the page'; 
$.ajax({ 
    type: 'POST', 
    data: o, 
    dataType: 'json', 
    url: 'home/PingBack', 
    success: function (result) { 
     alert(result.success); 
    } 
}); 
0

代碼對我來說似乎還行,乍一看。

使用try ...

data : {message : "Hi from the page."}, 

...看看這導致MHolder實例進行填充。

另外,使用像Fiddler這樣的東西來捕捉你的請求,並讓你看到到底是什麼張貼。