我使用揭示模塊模式和敲除來綁定窗體。當以這種形式輸入數據(註冊)時,需要將其發回MVC4網絡方法。通過jQuery Ajax調用Web服務的參數調用
這裏是jQuery代碼
/*
Requires JQuery
Requires Knockout
*/
op.TestCall = function() {
// Private Area
var _tmpl = { load: "Loading", form: "RegisterForm"};
var
title = ko.observable(null)
template = ko.observable(_tmpl.load),
msg = ko.observable(),
postData = ko.observable(),
PostRegistration = function() {
console.log("Ajax Call Start");
var test = GetPostData();
$.ajax({
type: "POST",
url: obj.postURL, //Your URL here api/registration
data: GetPostData(),
dataType: "json",
traditional: true,
contentType: 'application/json; charset=utf-8'
}).done(Success).fail(Failure);
console.log("Ajax Call End");
},
GetPostData = function() {
var postData = JSON.stringify({
dummyText1: dummyText1(),
dummyText2: dummyText2(),
});
return postData;
}
return {
// Public Area
title: title,
template: template,
dummyText1: dummyText1,
dummyText2: dummyText2
};
}();
控制器代碼是簡單按照現在
// POST api/registration
public void Post(string data)
{
///TODO
}
當我試圖,捕獲數據(使用簡單的console.log)並驗證它在jslint.com,這是一個有效的Json。
我試圖硬編碼數據
數據: 「{數據: '{\' 名稱\ ':\' 尼爾\ '}'}」, 但我仍得爲null,在我的網絡方法。
添加標記
[System.Web.Script.Services.ScriptMethod(UseHttpGet = false, ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
我Post方法在控制,但是仍沒有成果而偶試過JSON.Stringify
data: JSON.stringify(data)
但我仍然能在這個網絡的方法無效。
我無法找出解決方案。
類似的問題被發現@這個鏈接 http://forums.asp.net/t/1555940.aspx/1 甚至Passing parameter to WebMethod with jQuery Ajax 但並沒有幫助我:(
我不能這樣做,我需要使用JSON.stringify並獲得所需的。我稍微更新了我的問題。謝謝你的回答。 :) – Shubh 2012-07-30 09:18:10