jQuery / Ajax发布中的表单提交不会再次触发

时间:2019-05-28 13:37:16

标签: javascript jquery asp.net ajax asp.net-mvc

我在jQuery / .NET MVC中有一段代码看起来像这样:

 $('form').submit(function (event) {
                event.preventDefault();
                event.stopPropagation(); // only neccessary if something above is listening to the (default-)event too
                if ($(this).valid()) {
                    $('#confirmLoader').show();
                    $('.btnregister').hide();
                    var formdata = new FormData($(this).get(0));
                    $.ajax({
                        url: this.action,
                        type: this.method,
                        data: formdata,
                        processData: false,
                        contentType: false,
                        success: function (result) {
                            if (result.statusCode == 700) {
                                //  var loginWrapper = result.View.find(".loginWrapper").innerHTML;

                                //  var sas = $($.parseHTML(result.View)).find(".loginWrapper").prevObject[45].innerHTML; 


                                // $($.parseHTML(result.View)).find(".loginbody").html()
                                //
                                //console.log($($.parseHTML(result.View)).find(".loginbody").html());
                                $(".loginbody").html($($.parseHTML(result.View)).find(".loginbody").html());
                               //$("body").html(result.View);
                                //
                                // console.log(result.View);
                                return false;
                            }
                            else if (result.statusCode == 200) {
                                window.location.href = result.url;
                            }

                        }
                    });
                }
                return false;
            });

因此,此方法的基本目的是发布数据并将用户登录到系统上。

如果服务器响应时出现错误代码700 =>,我将在.net MVC操作中呈现整个页面,并将其作为结果返回给用户并应显示;

因此,例如,如果我输入了xy邮件和错误的密码,则第一次显示该消息,但是第二次显示整个页面,甚至没有执行JavaScript代码。

我必须注意两件事:

$("body").html(result.View); 

像这样,当状态码为700时,响应始终有效,并且始终正确显示消息。

但是,我不想替换用户的整个DOM,仅替换登录表单所在的部分,并显示错误消息。

这就是为什么我尝试这样做:

$(".loginbody").html($($.parseHTML(result.View)).find(".loginbody").html());

使用此解决方案只能在第一次使用...第二次将整个页面呈现给我,我可以看到页面正在刷新...

为什么在解决方案2中会发生这种情况?

P.S。这是在后台返回的代码:

ModelState.AddModelError("WrongUsernamePassword", "Wrong username or password!");

return Json(new { statusCode = 700, View = this.RenderView("Login", model) });

为什么第二种方法不起作用?

有人可以帮我吗?

0 个答案:

没有答案