2016-02-12 57 views
0

我仍然试图理解这个ajax。用json在自定义类中保存数据

我试图从JS病人保存到服务器端的数据库,但低于总的代码导致[警报(“错误”)

有人能看到错误?

MVC行动:

public JsonResult CreatePatient(string patient) 
{ 
    var jsonPatient = JsonConvert.DeserializeObject<Patient>(patient); 

    if (db.Patients.Contains(jsonPatient)) 
    { 
     db.Patients.Remove(jsonPatient); 
    } 
    db.Patients.Add(jsonPatient); 

    return new JsonResult(); 
} 

自定义类:

public class Patient 
{ 
    [Key] 
    public string Cpr { get; set; }   //ID 
    private string _firstname; 
    private string _lastname; 

    //public List<TestReceving> TestHandelings { get; set; } 

    public string Firstname 
    { 
     get { return _firstname; } 
     set { _firstname = value; } 
    } 

    public string Lastname 
    { 
     get { return _lastname; } 
     set { _lastname = value; } 
    } 
    public override bool Equals(object obj) 
    { 
     return obj is Patient ? Cpr == (obj as Patient).Cpr : false; 
    } 
} 

JS:

function savePatient() { 
    var Patient = { 
     Cpr: $("#cpr").val(), 
     Lastname: $("#lastname").val(), 
     Firstname: $("#firstname").val() 
    }; 

    var dataToPost = JSON.stringify(Patient); 

    $.ajax({ 
     type: "POST", 
     url: "/Patient/CreatePatient", 
     contentType: "application/json; charset=utf-8", 
     data: dataToPost, 
     dataType: "json", 
     success: function() { 
      // do what you want on success. 
      alert("saved"); 
     }, 
     error: function() { 
      alert("error"); 
     } 
    }); 
} 

我已经把它改为:

public JsonResult CreatePatient(Patient patient) 
{ 
    if (db.Patients.Contains(patient)) 
    { 
     db.Patients.Remove(patient); 
    } 
    db.Patients.Add(patient); 

    return new JsonResult(); 
} 

function savePatient() { 
    var Patient = { 
     Cpr: $("#cpr").val(), 
     Lastname: $("#lastname").val(), 
     Firstname: $("#firstname").val() 
    }; 

    $.ajax({ 
     type: "POST", 
     url: "/Patient/CreatePatient", 
     contentType: "application/json; charset=utf-8", 
     data: Patient, 
     dataType: "json", 
     success: function() { 
      // do what you want on success. 
      alert("saved"); 
     }, 
     error: function() { 
      alert("error"); 
     } 
    }); 
} 

但我仍然得到错误。

+0

公共JsonResult CreatePatient(患者的患者) –

+0

你好。我尝试了你所说的,但仍然得到错误。你会再看看吗? – user3265569

回答

2

你不需要JSON.stringify,只需发送Patient如:

data: Patient, 

,并在行动中收到:

public JsonResult CreatePatient(Patient patient) 
{ 
    ... 
} 

更新:在发送原始JSON(不字符串化)contentType: "application/json"不应该使用。

+0

感谢您的回复。我仍然得到错误。我编辑了这个问题。你会再看一遍吗? – user3265569

+0

@ user3265569你的行为被解雇了吗?如果是,那么你有一些例外的行动,试图调试它 –

+0

我得到︰“typeName”:“System.ArgumentException”,“消息”:“无效的JSON原语:Cpr。”, – user3265569

0

添加[HttpPost]方法体属性像

[HttpPost] 
public JsonResult CreatePatient(Patient patient){...} 
+0

我要去标记“基因R”的解决方案,我认为这是两个thougt的组合。 Thansk为您的回应。 – user3265569