logicOnAbstractions
logicOnAbstractions

Reputation: 2580

jQuery AJAX - Display responses HTML as a page

I'm using jquery ajax in this way:

$.ajax({
    url: url,
    type: "POST",
    data: data,
    success: function (response) {
        if ( foo ) {               
            alert("foo happened");
            // do stuff
        } else if (bar) {        
            // ??? display response as page ???
        }
    },
    error: { .... }
    }
});

Basically, in case of "foo" I do some ajax stuff on the page, but in case of "bar" I receive a fully-formed page that I simply want to display as-is. As if, basically, I had just clicked a submit button and the browser just did its normal thing with the response received from the server.... Any jQuery/JavaScript function to do that?

In other words, how I can just sort of "forward" the response to the browser so that it gets treated by it normally?

Upvotes: 0

Views: 1113

Answers (1)

Serge
Serge

Reputation: 43870

When you are using ajax you can't refresh the whole page, you can only refresh the partial view that should be defined inside of the main view . if you try to return the whole you will get a layout with it too

<div id="myPartialView">
  @Html.Partial("_MyPartialView",Model)
 </div>

ajax

$.ajax({
        
            url: "/MyController/MyAction",
            type: "POST",
            data: {myData:myData}
            success: function (result) {
                    $("#myPartialView").html(result);
            },
            error: function (xhr, exception) {
               
            }
        });

and the action

public partial class MyController : Controller
{
  public IActionResult MyAction(MyData myData)
  {
      ... some code
      var model = new myModel { ... assign model properties  };
     return PartialView("_MyPartialView", model);
 }
}

PS.

if you don' t use MVC you still should have this html

<div id="myPartialView">
  
 </div>

but ajax will be the same.

Upvotes: 1

Related Questions