Hello,
J'ajoute le tag débutant mais je ne suis pas sur sorry (je pense que mon problème est purement lié au code ajax qui est d'un niveau débutant).
EDIT// J'ai résolu le stress avec la méthode POST en utilisant (contournant mon problème) un Html.BeginForm, j'ai sérialisé cette form et cette fois-ci mon controlleur réceptionne bien les données! Il ne me reste plus que le problème d'afficher les infos dans mon code avec mon Get du coup!
Voici l'objectif final de ce code:
-Charger un formulaire dont les données viennent d'une DB externe et ensuite les modifier.
Pour cela, j'ai une méthode Get GetMember() qui selon l'id du membre (pour l'id j'utilise une session), va chercher ses données dans la db externe et ensuite les passe à la vue.
J'ai du coup également une méthode POST GetMember() qui reçoit un modèle appelé Member et qui crée un nouveau record dans ma DB externe (la modification doit d'abord être approuvée, d'où la création d'un nouveau record dans une table temporaire).
Mes problèmes sont (je pense) les suivants:
-Dans ma méthode Get, je n'arrive pas à réceptionner correctement mon résultat dans ma vue.
En effet, ma méthode se connecte bien à la DB, elle récupère les bonnes informations et retourne View(results), mais une fois dans le code ajax, une erreur 500 se produit... cela fait pas mal de temps que je bloque dessus et je ne trouve pas de solution..
-Dans ma méthode Post, mon appel ajax fonctionne vers ma méthode, mon soucis est que les valeurs des variables du modèle qui est en paramètre sont vides... J'ai pourtant vérifié via le débogueur Chrome et la variable "myFormdata" est bien remplie.
Néanmoins, le reste fonctionne et il va bien me créer un nouveau record dans ma DB Filemaker (même si les champs sont vides).
Petite précision, j'utilise .NET core.
J'ai hésité à plutôt poster mon topic dans la partie ajax, mais je me suis dit que c'était plus orienté .NET qu'ajax
Me voici donc actuellement bloqué!
Auriez-vous une solution?
Voici le code:
Contrôleur:
Classe(modèle) Member:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 [HttpGet] public async Task<IActionResult> GetMember() { try { ViewBag.sessionv = HttpContext.Session.GetInt32("idMember"); if(ViewBag.sessionv == null) { return RedirectToAction("Index", "Home"); } FileMakerRestClient client = new FileMakerRestClient("https://fms171.hostmy.solutions", "helloJAK", userName, password); var toFind = new Models.Members { Zkp_WEB = ViewBag.sessionv }; var results = await client.FindAsync(toFind); Console.WriteLine(results); bool isEmpty = !results.Any(); if (isEmpty) { return NotFound(); } Console.WriteLine(results); return View(results); } catch { return BadRequest(); } } [HttpPost] public async Task<IActionResult> GetMember(Models.Members model) { ViewBag.sessionv = HttpContext.Session.GetInt32("idMember"); if (ViewBag.sessionv == null) { return RedirectToAction("Index", "Home"); } if (ModelState.IsValid) { FileMakerRestClient client = new FileMakerRestClient("https://fms171.hostmy.solutions", "helloJAK", userName, password); var toCreate = new Models.Members { NameFirst = model.NameFirst, NameLast = model.NameLast, Politeness = model.Politeness }; var results = await client.CreateAsync(toCreate); return Ok(); } else return BadRequest(); }
Vue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Members { [DataMember(Name = "nameFirst")] // the filemaker field to use public string NameFirst { get; set; } [DataMember(Name = "nameLast")] // the filemaker field to use public string NameLast { get; set; } [DataMember(Name = "politeness")] // the filemaker field to use public string Politeness { get; set; } [DataMember(Name = "zkp_WEB")] // the filemaker field to use public int Zkp_WEB { get; set; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 @model jak.formulaire.Models.Members <div id="myForm"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Politeness, "Politeness", htmlAttributes: new { @class = "control-label col-md-4" }) @Html.EditorFor(model => model.Politeness, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter politeness", @id = "Politeness" } }) <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> </div> @Html.ValidationMessageFor(model => model.Politeness, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.NameFirst, "First name", htmlAttributes: new { @class = "control-label col-md-4" }) @Html.EditorFor(model => model.NameFirst, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter first name", @id = "NameFirst" } }) </div> <div class="form-group"> @Html.LabelFor(model => model.NameLast, "Last name", htmlAttributes: new { @class = "control-label col-md-4" }) @Html.EditorFor(model => model.NameLast, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter last name", @id = "NameLast" } }) </div> <br /><br /> <button type="submit" class="btn btn-primary" id="btnEdit">Submit</button> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> @section Scripts{ <script type="text/javascript"> $(document).ready(function () { GetMember(); Edit(); }); function GetMember() { $.ajax({ type: "GET", url: "https://localhost:44338/Members/GetMember/", dataType: "json" }); } function Edit() { $('#btnEdit').on('click', function () { var firstname = $("#NameFirst").val(); var lastname = $("#NameLast").val(); var politeness = $("#Politeness").val(); var myFormdata = { Politeness: politeness, NameFirst: firstname, NameLast: lastname }; $.ajax({ type: "POST", contentType: "application/json", url: "https://localhost:44338/Members/GetMember/", data: JSON.stringify(myFormdata), success: function (data) { if (data === "success") { alert("Member successfully modified"); } }, error: function (data) { alert('An error occurs during the process of your request'); } }); }); } </script> }
Partager