2016-04-27 10 views
1

フォームデータをシリアル化して、余分なオブジェクトオブジェクトを追加しています。複雑なオブジェクトがシリアル化された配列に追加されました。サーバー側で常にnullです。

のjQueryコード:

.... 
var users= getUsers(); 
var formData = $("#form").serializeArray(); 
formData.push({ name: 'Users', value: users}); 

$.ajax({ 
    url: "/ControllerName/ViewName", 
    type: "POST", 
    contentType: "application/x-www-form-urlencoded; charset=UTF-8" 
    data: formData 
}); 
.... 
function getUsers() { 
    var users= []; 
    users.push(new Object({ 
     Name: "User 1", 
    })); 


return users; 
} 

C#モデル

public class File 
{ 
    public string Name { get; set; } 

    public int Id { get; set; } 

    public List<Users> Users { get; set; } 

} 

public class Users 
{ 
    public string Name { get; set; } 
} 

呼び出しがサーバー側のコントローラのアクションをヒットすると、ユーザーリストは、(0のカウント)常に空です。私はストリンジェライズし、Jsonとして送信しようとしましたが、それはどちらも助けになりませんでした。私はサーバー側でASP.NET MVC 5を使用しています。

私は間違っていますか?

編集 私は(この場合はユーザーに)FORMDATAへのオブジェクトのリストをプッシュしようとしているとのトラブルを抱えています。ブール値をプッシュすると、サーバ側でデシリアライズされます。

+0

fiddle

$(document).ready(function(){ var users= getUsers(); var formData = $("#form").serializeArray(); formData.push({ name: 'Users', value: users}); alert(JSON.stringify(formData)); $.ajax({ url: "/ControllerName/ViewName", type: "POST", data: JSON.stringify(formData) }); }); function getUsers() { var users= []; users.push({Name: "User 1"}); return users; } 

編集
変更data: formDataは引数に 'contentType'プロパティを設定してみてくださいされ、' $ .ajax'に渡されるオブジェクト。 –

+0

また、あなたの 'getUsers'関数では、' users.push({Name: "User 1"}) ' –

+0

@MichaelLを実行するだけで' new Object'を実行する必要はありません。私は "application/x-www-form-urlencoded"のcontentTypeを使用しています。サンプルを更新します。 – Kaladin

答えて

0

$(document).ready(function(){ // code here });にコードをラップすると、 のように、DOMがロードされて準備完了状態になったら、ラップされたJavaScriptが実行されます。 for more info。ここで

data: JSON.stringify(formData)

+0

あなたは '$(document).ready()'が何であるか、そして彼がどのように役立つのかを説明することで、あなたの答えを改善することができます(おそらくあなたは '{name:" Name "、value:" User 1 "}' 。 –

+0

データを文字列化すると、サーバー側のすべての値に対してnullが返されます。私は$(document).ready()を持っていますが、それをサンプルに含めるのを忘れてしまいました。 – Kaladin

+0

'data:JSON.stringify(formData)'これが役立つことを望みます - http://stackoverflow.com/questions/10110805/jquery-post-json-object-to-a-server – kakurala

関連する問題