Ich habe ein Problem bei der Übergabe eines JavaScript-Objekts an webmethod in asp.net.
Das JavaScript-Objekt ist:
var Materials = new Object();
function() {
Materials.MaterialName = $('[id*="txtMaterialName"]').val();
Materials.QuantityType = $('[id*="txtquantity"]').val();
AddNewMaterialToDb(Materials);
$(this).dialog('close');
}
Hier ist materials das Objekt und nun möchte ich es an eine Web-Methode übergeben, die einen Parameter der Klasse type benötigt.
Jetzt habe ich zwei Möglichkeiten:
- entweder die Webmethode so zu definieren, dass sie einen Parameter der Klasse MaterialEntity annimmt, der automatisch die von der AJAX-Methode übergebene JSON-Zeichenfolge verstehen würde
- die Webmethode zu erstellen, die den JSON-String aufnimmt und in die Klasse MaterialEntity serialisiert
Wie kann ich das tun, wenn ich jQuery AJAX verwende?
Ich meine, um genau zu sein, wie sollte ich das jQuery-Objekt als Daten für jQuery AJAX übergeben, so dass eine der oben genannten zwei Bedingungen erfüllt wird?
Funktion für jQuery AJAX:
function AddNewMaterialToDb(materials) {
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'Services/Service.asmx/AddNewMaterial',
data :'{"Materials":"' + JSON.stringify(materials).replace('"', '\\\"') + '"}',
dataType: "json",
success: function(data, textStatus) {
if (textStatus == "success") {
if (data.d == true) {
alert('New Item Added');
}
}
},
error: function(data, textStatus) {
alert('An error has occured retrieving data!');
}
});
}