2017-05-15 5 views
0

Ich versuche einige Daten mit Ajax Call-Methode zu C# Web API zu senden, es funktioniert gut mit 'GET Methode' hier ist mein Code Aber ich bekomme 404 Not found Fehler, wenn ich es versuche Parameter mit 'POST' weitergeben müssen: Javascriptajax jQuery 3.1 Senden von Daten per POST an C#

$.ajax({ 
    type: "POST",  //GET or POST or PUT or DELETE verb   
    url: "/api/account/updateuser/",  // Location of the service 
    data: { Email: user, Roles: Roles }, 
    success: function (result) {//On Successful service call 
     console.log(result); 
    } 
}); 

C# Controller:

[HttpPost] 
public string UpdateUser(string Email,string Roles) 
{ 
    return Email; 
} 

i auch diese Web-API PostMan Google Chrome-Erweiterung getestet und es funktioniert auch gut, Danke.

** EDIT: Wenn ich nur eine Anfrage ohne Parameter senden, funktioniert es gut.

[HttpPost] 
public string UpdateUser() 
{ 
    return "HI"; 
} 
$.ajax({ 
       type: "POST",  //GET or POST or PUT or DELETE verb   
       url: "/api/account/updateuser/",  // Location of the service 
       data: {}, 
       success: function (result) {//On Successful service call 
        console.log(result); 
       } 
      }); 
+1

Überprüfen Sie die Netzwerk-Registerkarte in Ihrem Browser-Entwickler-Tools, und sehen, ob der Anruf erfolgreich oder nicht abgeschlossen wird, und wenn nicht, was der Fehler ist. –

+0

Was ist das Problem hier? –

+0

Haben Sie Ihre Route URL in apicontroller angegeben .. – Abi

Antwort

0

Ihren Ajax-Request Ändern von dataType und contentType Hinzufügen eine gültige Json Serialisierung auf dem Server der Seite haben

$.ajax({ 
     type: "POST", 
     url: requestUrl, 
     dataType: "json", 
     contentType: "application/json", 
     success: function (result) {} 
    ); 
+0

Danke für Ihre Antwort, aber nichts hat sich geändert. –

0

Scheint wie json serialize Problem. Bitte überprüfen Sie sie wie unten

var request = JSON.stringify({ 
     Email: user, 
     Roles: Roles 
    }); 

$.ajax({ 
    type: "POST",  //GET or POST or PUT or DELETE verb   
    url: "/api/account/updateuser/",  // Location of the service 
    contentType: "application/json", 
    dataType: "json", 
    data: request, 
    success: function (result) {//On Successful service call 
     console.log(result); 
    } 
}); 

Und in C# Seite

[HttpPost] 
public string UpdateUser(string Email,string Roles) 
{ 
    return Email; 
} 
+0

Aber es scheint, dass Daten nicht übereinstimmen Sie analysieren zwei Strings in JSON und versuchen dann, zwei Klassen in C zu lesen # –

+0

Sind Benutzer und Rollen Zeichenfolgewerte oder Objekte in js? – Damith

+0

Sie sind String –

0

Versuchen Actionrückgabetyp in Ihrer Controller-Funktion und ein Gehalt Ergebnisobjekt zurück. Stellen Sie außerdem sicher, dass Sie die json stringify, bevor es an den Controller Posting -

Client-Skript:

var userData = { Email: '[email protected]', Roles: 'Software Developer' }; 
      $.ajax({ 
       type: "POST",  //GET or POST or PUT or DELETE verb   
       url: "/api/account/updateuser/",  // Location of the service 
       contentType: 'application/json; charset=utf-8', 
       data: JSON.stringify(userData), 
       success: function (result) {//On Successful service call 
        console.log(result); 
       } 
      }); 

C# Controller-Code:

[HttpPost] 
public ActionResult updateUser(string Email, string Roles) 
{ 
    return Content(Email); 
} 
0

versuchen, ein Objekt als Parameter zu verwenden.

Sie könnten sogar einen dynamischen Objektparameter verwenden, für den Sie keine Klasse schreiben müssen.


Dynamische

Ihre Anfrage bleibt gleich, aber Sie sollten die Datentypen hinzufügen:

$.ajax({ 
type: "POST",  //GET or POST or PUT or DELETE verb   
url: "/api/account/updateuser/",  // Location of the service 
data: { Email: user, Roles: Roles }, 
contentType: "application/json", 
dataType: "json", 
success: function (result) {//On Successful service call 
    console.log(result); 
} 
}); 

Und Ihre C# Controller wie folgt aus:

[HttpPost] 
public string UpdateUser(dynamic User) 
{ 
    var roles = User.Roles; 
    var mail = User.Email; 
    return mail; 
} 

Benutzerklasse

Oder Sie erstellen eine Klasse für den Benutzer.

class User 
{ string Email; string Roles; } 

und ein User-Objekt übergeben:

[HttpPost] 
public string UpdateUser(User User) 
{ 
    var roles = User.Roles; 
    var mail = User.Email; 
    return mail; 
}