2016-06-12 4 views
-2

Ich habe Probleme mit dem Speichern neuer Datensätze in der Datenbank mit C# -Controller. Hier ist der JS-Code:So speichern Sie Daten von JavaScript nach C#

<script type="text/javascript"> 
function save1(input1, input2) { 
    var lol = document.getElementById('input1').value + " " + document.getElementById('input2').value; 
    alert(lol); 
    $.ajax({ 
     url: ' @Url.Action("Saving", "LanguagesController")', 
     type: "POST", 
     data: { name: input1, level: input2 }, 
     dataType: "text", 
     success: function (result) { 
      alert("Yess!!") 
     }, 
     error: function (request, error) { 
      alert("Noooo : " + error); 
     } 
    }); 
    alert("End of function"); 
} 

Hier ist meine C# Controller:

[HttpPost] 
public ActionResult Saving(string name, string level) 
{ 
    Language lan = new Language(); 
    lan.name_of_language = name; 
    lan.level_of_difficality = level; 
    db.Languages.Add(lan); 
    db.SaveChanges(); 

    return View(db.Languages.ToList()); 
} 

Danke im Voraus

+3

Was ist das Problem? – Shaharyar

+0

Es speichert es einfach nicht, ich bekomme die Nachricht "Fehler". – Rostyk

+0

Ist db Ihr Entity Framework-Kontext? Haben Sie bestätigt, dass Ihre Verbindungen ordnungsgemäß eingerichtet sind? Versuchen Sie, einen kleinen Komponententest zu schreiben, um sicherzustellen, dass Sie in die DB schreiben können. –

Antwort

0

ich nichts falsch mit sehen kann, was Sie haben (Aber erwartest du wirklich Text zurück?), aber das wäre besser:

HTML:

<a class="btn" data-url="@Url.Action("Saving","LanguagesController")">Save</a> 

Javascript:

$('a[data-url]').on('click',function() { 
    var url=$(this).data('url'); 
    var input1=$('something').val(); 
    var input2=$('somethingelse').val(); 
    save1(url,input1,input2); 
}); 

function save1(url, input1, input2) { 
    var lol = document.getElementById('input1').value + " " + document.getElementById('input2').value; 
    alert(lol); 
    $.ajax({ 
     url: url, 
     type: "POST", 
     data: { name_of_language: input1, level_of_difficality: input2 }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json" 
    }).done(function(result) { 
     alert("Yess!!") 
    }).fail(function(jqXHR, textStatus, errorThrown) { 
     alert("Noooo : " + textStatus + " " + errorThrown); 
    }); 
    alert("End of function"); 
} 

C#:

[HttpPost] 
public JsonResult Saving(Language lan) 
{ 
    db.Languages.Add(lan); 
    db.SaveChanges(); 

    return Json(db.Languages.ToList()); 
} 

PS. Difficity ist nicht korrekt buchstabiert.

+0

es hilft nicht, bekomme ich das gleiche Fehlerfenster, aber danke für den Versuch. Kannst du mehr über neue Konstrukte erzählen oder einen Link darüber schicken? – Rostyk

+0

Aktualisierte Antwort mit neueren Konstrukten. –

+0

Aktualisierte Antwort mit einer besseren Art der Handhabung von URLs, anstatt sie in das Javascript zu platzieren. Dadurch können Sie das JavaScript aus der Ansicht in eine externe Datei verschieben (wodurch die Seitengröße reduziert wird). –

0

Ihr Problem ist, du bist ein control eher als eine Seite value

function save1(input1, input2) { 
    var lol = document.getElementById('input1').value + " " + document.getElementById('input2').value; 
    alert(lol); 
    $.ajax({ 
     url: ' @Url.Action("Saving", "LanguagesController")', 
     type: "POST", 
     data: { name: getElementById('input1').value , level: getElementById('input2').value }, //changed from control to value 

     contentType: "application/json; charset=utf-8", // define contenttype 
    dataType: "json", //and the type you're expecting 
     success: function (result) { 
      alert("Yess!!") 
     }, 
     error: function (request, error) { 
      alert("Noooo : " + error); 
     } 
    }); 
    alert("End of function"); 
} 

Und Server vorbei, können Sie Ihr Modell als Eingabe erhalten muss:

[HttpPost] 
public ActionResult Saving(Language lan) 
{ 
    db.Languages.Add(lan); 
    db.SaveChanges(); 

    return db.Languages.ToList(); 
} 
Verwandte Themen