4 Stimmen

Übergabe eines JavaScript-Objekts von jQuery AJAX an eine Web-Methode zur individuellen Serialisierung

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:

  1. 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
  2. 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!');
    }
});
}

2voto

Hari Pachuveetil Punkte 10066

Bitte prüfen Sie, ob este Antwort hilft. Achten Sie insbesondere auf alle Attribute, die die Dienstklasse und die Dienstmethode haben.

EDIT: Diese Artikel enthält einige Tipps, die für diese Frage nützlich sein könnten

-1voto

Naveed Ahmad Punkte 3146

Können Sie etwa so vorgehen:

$.ajax({
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    url: 'Services/Service.asmx/AddNewMaterial',      
    data : { name: materials.MaterialName, quantity: materials.QuantityType } ,
    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!');
    }
});

Jetzt können Sie in Ihrer asp.net Web-Methode einfach verwenden Request.Form["name"] um den Materialnamen zu erhalten und Request.Form["quantity"] um den Mengentyp zu erhalten. Auf diese Weise wird Ihre Webmethode generisch und Sie müssen keine Parameter an Ihre Webmethode übergeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X