明らかにするモジュール パターンとノックアウトを使用してフォームをバインドしています。そのフォーム(登録)にデータが入力されると、MVC4 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 です。
データを次のようにハードコーディングしてみました
data: "{data: '{\'name\':\'niall\'}'}", それでも、私の Web メソッドでは null として取得されます。
制御された Post メソッドにタグ
[System.Web.Script.Services.ScriptMethod(UseHttpGet = false, ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
を追加しましたが、まだ実りある結果はありませんJSON.Stringify を試してみまし
data: JSON.stringify(data)
たが、それでも Web メソッドで null を取得します。
私は解決策を理解することができません。
このリンクで同様の問題が見つかりました http://forums.asp.net/t/1555940.aspx/1 でもjQuery Ajax を使用して WebMethod にパラメーターを渡します が、役に立ちませんでした:(