requête ajax retour vue partielle
Je suis en train de faire la demande de retour sur ajax mise à jour partielle de la vue. Apparemment, la demande n'est pas retourné à partir de l'ajax fonction.
Ici ajax code:
<script type="text/javascript">
function doAjaxPost(myid) {
//get the form values
var ApplSort = $('#DropDownListSort').val();
var radio_check_val=0;
for (i = 0; i < document.getElementsByName('radio').length; i++) {
if (document.getElementsByName('radio')[i].checked) {
radio_check_val = document.getElementsByName('radio')[i].value;
}
}
//alert("myid=" + myid +";"+ "ApplSort=" + ApplSort + ";" + "radio_check_val=" + radio_check_val);
$.ajax(
{
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: { ApplSort: ApplSort, radio_check_val: radio_check_val, myid: myid },
UpdateTargetId: "tabledata",
dataType: 'html',
url: 'Partner/PartnerApplications',
success: function (data) {
var result = data;
$('tabledata').html(result);
},
error: function (error) {
alert('Ошибка AJAX-запроса. Обновите страницу!');
}
});
}
</script>
Échec est appelé et que la page est complètement mis à jour.
Voici le contenu mis à jour dans la vue:
<div id="target">
@Html.Partial("~/Views/Partner/PartnerApplicationsPartial.cshtml")
</div>
code du contrôleur:
[HttpPost]
public ActionResult PartnerApplications(int[] ApplSort, int[] radio_check_val, int[] myid)
{
MordaPartner MrdPrt = new MordaPartner(Server, Request);
if (Request.IsAjaxRequest())
{
var obj = MrdPrt.morda_obj.CookieAuthenticationPartner(Server, Request, Response, MrdPrt.PartnerLogin, MrdPrt.PartnerPassword);
if (obj != null)
{
//alert("ApplSort=" + ApplSort + ";" + "ApplSelectOffer=" + ApplSelectOffer + ";" + "ApplSelectAuction=" + ApplSelectAuction + ";" + "ApplSelectNoOffer=" + ApplSelectNoOffer);
var objs = from s in MrdPrt.morda_obj.entities.applications where s.application_user_city == obj.partner_city & s.application_blocked != 1 orderby s.application_id ascending select s;
return Json(new { data = this.RenderPartialViewToString("PartnerApplicationsPartial", objs) });
}
else
{
return RedirectToAction("Registration");
}
}
else { return RedirectToAction("PartnerApplications"); }
}
RenderPartialViewToString elle a été prise à partir d'ici: http://www.c-sharpcorner.com/blogs/7150/implementing-renderpartialviewtostring-in-asp-net-mvc-3.aspx
script est chargé:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
Ce que je fais mal?
- Question: dans la même fonction PartnerApplications vous de retour JSON ou HTML, mais votre code JavaScript gère HTML uniquement. Est-ce que vous avez l'intention de faire?
- Oui, en effet ... Et comment puis-je retourner uniquement le HTML?
- BTW, si c'est une requête Ajax, vous ne pouvez pas rediriger les requêtes ajax. Vous avez besoin de retourner JSON pour laisser votre Javascript rediriger l'utilisateur.
Vous devez vous connecter pour publier un commentaire.
Je pense que votre solution la plus simple puisque vous avez envie de faire un partiel...
C'est une capacité qui est intégré dans MVC qui le rend TRÈS facile à mettre à jour un élément avec les résultats d'une partielle.
Tout cela est en train de dire que vous voulez un nouveau Ajax Formulaire qui appelle la
PartnerApplications
Action. Vous souhaitez que l'action appelée avec unHttpMethod
qui est unPOST
demande et vous voulez que les résultats remplacer (InsertionMode.Replace
) les éléments existants dans letarget
(quoi que peut-être) et si la demande a lieu, vous voulez que l'élémentAjaxSearch
visible (c'est facultatif, mais quelque chose que j'utilise pour montrer que ça fonctionne).Cela permet de générer le code JavaScript requis pour vous et jusqu'à ce que vous obtenir en quelque chose au-delà de simplement retourner partielle des œuvres EXCELLENTES!
EDIT: Aussi, vous aurez besoin de mettre à jour votre Action...
return Json(new { data = this.RenderPartialViewToString("PartnerApplicationsPartial", objs) });
évolution des besoins en......
return PartialView("PartnerApplicationsPartial", objs);
MODIFIER SUR LA BASE DES OBSERVATIONS:
Sans connaître les données qui sont envoyées vers le serveur, je ne peux pas vous dire ce qu'il faut écrire dans le but de remplacer cette méthode. Je voudrais cependant regarder les propriétés de
new AjaxOptions(){}
, car il a des propriétés supplémentaires qui vous permettent de spécifier le nom d'une fonction JavaScript à appeler sur quatre états (avant/après/succès/échec) de la requête Ajax. Donc, si vous avez besoin de calculer quelque chose que vous pouvez faire cela en spécifiant une fonction JavaScript qui va être traitée avant que la requête Ajax est envoyée.Également vous faire beaucoup plus de travail alors nécessaire de la radio sélectionnée bouton de valeur (surtout depuis que vous êtes à l'aide de jQuery).
Vous pouvez remplacer...
avec quelque chose de similaire....
Vous ne devriez pas
RedirectToAction
. Au lieu de rediriger retourPartialView('Registration');
.Questions connexes:
MVC Retour Vue Partielle en JSON.
Charge PartialView d'AJAX et de la Vue pour les non-requête AJAX
PartialView
au lieu deRedirectToAction
. Comment est-ce que le lien seule réponse?