3 Stimmen

Wie verwendet man jQuery AJAX in ASP.net Master Page?

Ich habe eine ASP.net-Webanwendung mit einer Masterseite. In der Menüleiste meiner Masterseite gibt es eine Suchfunktion, bei der ein Benutzer eine Suchanfrage eingibt und auf eine Schaltfläche klickt. Wenn die Schaltfläche angeklickt wird, navigiert der Browser des Benutzers zu einer Seite, die Suchergebnisse anzeigt. Diese Funktion funktioniert hervorragend.

Ich habe mich jedoch entschieden, jQuery AJAX und jQuery Autocomplete zu verwenden, um das Programm benutzerfreundlicher zu gestalten. Die Suche funktioniert gut von http://example.com/page1.aspx y http://example.com/page2.aspx aber es funktioniert nicht von http://example.com/subdirectory/index.aspx .

Hier ist mein Javascript-Code zur Durchführung der Autovervollständigung: (von der Master-Seite)

function setupSerialNumberAutocomplete(id) {
    $(id).autocomplete({
        source: function(request, response) {
            $.ajax({
                url: "DeviceSelection.aspx/getDeviceFieldAutocomplete",
                data: "{ 'text': '" + escape(request.term) + "', 'field': 'SerialNumber' }",
                dataType: "json",
                type: "POST",
                contentType: "application/json",
                dataFilter: function(data) { return data; },
                success: function(data) {
                    response($.map(data.d, function(item) {
                        return {
                            value: item
                        }
                    }))
                },
                error: function(xhr, status) {
                    var exception = eval("(" + xhr.responseText + ")");
                    $("#divStatus").html("Error fetching registration codes list: " + xhr.statusText + " - " + exception.Message + ".");
                }
            }); //end - ajax
        },
        minLength: 2,
        focus: function(event, ui) {
            $(id).val(ui.item.value);
            return false;
        },
        select: function(event, ui) {
            $(id).val(ui.item.value);
            return false;
        }
    }); 

Es handelt sich um einen jQuery-AJAX-Aufruf an DeviceSelection.aspx/getDeviceFieldAutocomplete, einen Webdienstaufruf in meinem ASP.net-Code. DeviceSelection.aspx befindet sich unter http://example.com/DeviceSelection.aspx Ich vermute also, dass das Problem darin besteht, dass ein Benutzer beim Zugriff auf http://example.com/subdirectory/index.aspx und eine Abfrage eingibt, versucht es, den Webdienst unter http://example.com/subdirectory/DeviceSelection.aspx .

Wie kann ich das schaffen?

4voto

riwalk Punkte 13730

Ändern Sie es in dies:

...
$.ajax({
    url: "/DeviceSelection.aspx/getDeviceFieldAutocomplete",
    data: "{ 'text': '" + escape(request.term) + "', 'field': 'SerialNumber' }",
    dataType: "json",
...

Das vorangestellte "/" bedeutet, dass die URL relativ zur Domäne ist (und nicht relativ zur aktuellen Seite).

2voto

jcolebrand Punkte 16102

Können wir etwas relativ zum virtuellen Verzeichnis bekommen?

Wie wäre es, wenn Sie Folgendes tun würden <%= Request.ApplicationPath %> in den Code für die URL einfügen und einen absoluten Pfad angeben? Auf ähnliche Weise könnten Sie den Pfad mit einem Client-Resolver auflösen (ich habe die genaue Syntax vergessen, aber sie ist vorhanden)

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