it-swarm.com.de

Wie man einen ... macht AJAX GET-Aufruf in der ASP.NET MVC-Anwendung

Ich lerne Webentwicklung. Und ich möchte nur einen einfachen AJAX GET-Aufruf in der ASP.Net MVC-Anwendung machen und ich möchte visualisieren, wie es funktioniert. Das kann ich aber nicht. Ich bin ein Anfänger und hätte dumme Fehler machen können. Ab sofort sind aber keine Fehler in meinem Code.

Unten ist was ich habe:

Ich habe also eine Index.cshtml-Datei, die bereits geladen ist. Jetzt möchte ich auf dieser Seite einen Ajax GET call für einen der function erstellen, die ich in HomeController geschrieben habe, und der Aktionsname ist Test. Ich möchte nur den Haltepunkt in diesem Test Action von Homecontroller treffen und etwas zurück zu dem Success von AJAX-Aufruf geben. Im HomeController habe ich unten Aktion

[HttpGet]
public ActionResult Test()
{
    return View("hello");
}

jQuery

    $.ajax({
        url: '/Home/Test',
        type: 'GET',
        success: function (html) {
            alert(html);
        },
        error: function (error) {
            $(that).remove();
            DisplayError(error.statusText);
        }
    });
}

Verwirrung: Muss ich ein cshtml für Test erstellen? Aber das will ich eigentlich nicht. Ich möchte nur, dass die Aktion Test mir Daten zurückgibt. Und ich werde diese Daten in meiner bereits geöffneten Index.csthml-Datei anzeigen.

Fehler: Kein Fehler, aber ich kann den Haltepunkt in Test Action des Controllers nicht erreichen. Bitte beachten Sie, dass Success von AJAX trifft, ich jedoch keine Daten sehe. Aber ich bin mir sicher, dass es den Test-Action-Breakpoint nicht erreicht hat.

2
Unbreakable

Ändern Sie Ihre Aktionsmethode wie folgt

[HttpGet]
public JsonResult Test()
{
    return Json("myContent",JsonRequestBehavior.AllowGet);
}

Und in Ihrer Erfolgsmethode in der 'html'-Variablen erhalten Sie "myContent" zurück.

3
Anadi

Beispiel:

 function RemoveItem(ItemId) {

                if (ItemId && ItemId > 0) {
                    $.ajax({
                        cache: false,
                        url: '@Url.Action("RemoveItem", "Items")',
                        type: 'POST',
                        data: { id: ItemId },
                        success: function (result) {
                            if (result.success == true) {
                                $("#CartItemGridDiv").load('@Url.Content("~/User/Items/CartItemGrid")');
                                alert('Item Removed successfully.');
                            }
                            else {
                                alert('Item not removed.');
                            }
                        },
                        error: function (result) {
                            alert('Item not removed.');
                        }
                    });
                }
            }

        public ActionResult RemoveItem(int id)
        {
            if (id > 0)
            {
                bool addToChart = false;

                addToChart = Utilities.UtilityClass.RemoveItem(id);

                if (addToChart)
                {
                    return Json(new { success = true }, JsonRequestBehavior.AllowGet);
                }
            }
            return Json(new { success = false }, JsonRequestBehavior.AllowGet);
        }
            public ActionResult CartItemGrid()
        {
            List<CartItems> oItemList = (List<CartItems>)Session[MvcMAB.StringConst.CartItemSession];
            return View(oItemList);
        }
1
HazemTafour

C #:

public JsonResult Test()
    {
        return Json("hello");
    }

Abfrage:

    $.ajax({
        url: '/Home/Test',
        type: 'Post',
        dataType: 'json',
        success: function (html) {
            alert(html);
        },
        error: function (error) {
            alert(error);
                       }
    });

Da Sie keine Ansicht zurückgeben möchten, müssen Sie möglicherweise Json() anstelle von View() zurückgeben. So wie das:

    public ActionResult SomeGetAction(int? id)
    {
       //Some DB query here
       var myJsonList = myListQuery;
       return Json(myJsonList, JsonRequestBehavior.AllowGet);
    }

Oder bei einer einfachen String-Antwort:

 public ActionResult SomeGetAction()
    {

       return Json("My String", JsonRequestBehavior.AllowGet);
    }

Ich würde empfehlen, html in response umzubenennen. Ändern Sie auch that in this im Abschnitt Fehlerreaktion.

 $.ajax({
    url: '/Home/Test',
    type: 'GET',
    success: function (response) {
        alert(response);
    },
    error: function (error) {
        $(this).remove();
        DisplayError(error.statusText);
    }
});

Genießen.

0
Ramy Mohamed