Frage

Ich habe die folgenden JSON-Klasse-I beabsichtigen ist zu verwenden Managements Anrufe auf meiner Datenbank auszuführen asynchron:

<script type="text/javascript">

    var CalendarManager = {

        defaultOptions: {
            staffcode: 0,      // required
            date: 0,           // required
            activityCode: 0,   // required
            clientCode: null,  // optional
            contactCode: null, // optional
            destination: '',   // optional/doesn't matter
            travelCode: null,  // optional
            miles: null,       // optional
            overnight: false,  // optional
            notes: ''          // optional/doesn't matter
        },

        createEvent: function(options) {
            var combinedOptions = $.extend(true, {}, this.defaultOptions, options);
            $.ajax({
                type: "POST",
                url: 'calendar/calendar-manager-ajax.aspx/CreateEvent',
                data: combinedOptions,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data, textStatus, XMLHttpRequest) {
                    alert(textStatus + ", " + data);
                },
                error: function(data, textStatus, XMLHttpRequest) {
                    alert(textStatus + ", " + data);
                }
            });
        }
    };
</script>

Ich benutze es dann in meiner Seite wie folgt:

<script type="text/javascript">
    CalendarManager.createEvent(); // random test
</script>

Im Moment versuche ich, diese AJAX-Aufruf zu erhalten Feuer der folgende Methode:

[WebMethod()]
public static string CreateEvent(int staffcode, int date, 
    int activitycode, int? clientcode,
    int? contactCode, string destination, 
    int? travelcode, int? miles, 
    bool overnight, string notes)
{
    return null;
}

Leider ist die Methode CreateEvent nicht genannt zu werden, und ich einen AJAX-Fehler erhalten (einen Haltepunkt Einstellung nicht zu stoppen Ausführung):

  

Fehler [Objekt XMLHttpRequest]

Wenn ich Änderung data: combinedOptions zu data: "{}" und eine andere Methode zu meinem ASPX hinzufügen (wie unten) der Code funktioniert erfolgreich:

[WebMethod()]
public static string CreateEvent()
{
    return null;
}

Im Grunde ist meine Frage: wie ich optionale Parameter zu einem WebMethod angeben, wenn JSON-Daten bereitstellt

Ich weiß, ich kann die Parameter reduzieren auf nur die erforderlichen Werte, und dann HttpContext.Request.Params verwenden, um die Werte der optionalen Paramater zu lesen, aber ich würde die Art und Weise habe ich versucht, hier sollte gearbeitet haben gedacht haben.

EDIT

Der XMLHttpRequest.responseText Wert für den Fehler ist:

  

Ungültige JSON primitiv. Staffcode

Das ist mir noch mehr von der Fährte des Problems zu werfen: (

War es hilfreich?

Lösung 2

es behoben. Es gab 2 Probleme.

Als erstes wird der Fall aller meiner Parameter falsch war (Anmerkung „activityCode“ nicht „activitycode“).

Und ich jetzt auch verwenden:

data: JSON.stringify(combinedOptions)

Dumme Fehler wirklich, aber dort haben Sie es.

Andere Tipps

Es gibt keine solche Dinge wie ‚optional‘ Parameter. Übergeben Sie einen Standardwert für nicht verwendete params.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top