2015-04-06 94 views
0

控制器: -如何使用Jquery Ajax函數傳遞參數?

[HttpPost] 
public ActionResult Save(string Content) 
{ 
    var result = _repo.Save(Content); 
    return Json(result, JsonRequestBehavior.AllowGet); 
} 

JS: -

$("#saveTree").on("click", function() { 
var tree = $("#dvTree").jstree(true).get_json(); 
var url = '/Home/Save'; 
$.ajax({ 
    url: url, 
    type: 'POST', 
    data: JSON.stringify(tree) , 
    cache: false, 
    contentType: "application/json; charset=utf-8", 
    success: function(data) { 
     alert('saved'); 
    }, 
    error: function(data) { 
     alert('failed'); 
    } 
}); 

}); 

問題是樹paramater我傳遞給控制器​​的方法保存,它作爲空。樹變量不是空白它有價值。

如何將樹的值傳遞給Save Method?

+0

那麼當你運行ajax調用之前console.log(tree)時,你會得到什麼? – John

+0

@John:這是ajax調用之前的變量值。 [Object {id =「1」,text =「Root node 222」,icon = true,more ...}] – user1327064

+0

我想你可能需要將對象轉換成json – John

回答

0

這裏是我如何修復它......看看我如何在'data:'中傳遞參數。

$("#saveTree").on("click", function() { 
var tree = $("#dvTree").jstree(true).get_json(); 
var url = '/Home/Save'; 
$.ajax({ 
    url: url, 
    type: 'POST', 
    data: "{ 'tree':'" + JSON.stringify(tree) + "'}", 
    cache: false, 
    contentType: "application/json; charset=utf-8", 
    success: function(data) { 
     alert('saved'); 
    }, 
    error: function(data) { 
     alert('failed'); 
    } 
}); 

}); 
+0

好東西。你不需要引號,也就是說:'data:{tree:JSON.stringify(tree)}'。或者像之前聲明對象:'var dataToSend = {tree:JSON.stringify(tree)};'然後將對象傳遞給ajax調用:'$ .ajax({url:url,type:'POST',data :dataToSend,cache ...'這可以讓你在ajax處理程序中直接控制變量。 – John