Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
$.submit表单和replace div使用ajax在新的partialview上具有奇怪的jquery行为_Ajax_Asp.net Mvc 3_Jquery - Fatal编程技术网

$.submit表单和replace div使用ajax在新的partialview上具有奇怪的jquery行为

$.submit表单和replace div使用ajax在新的partialview上具有奇怪的jquery行为,ajax,asp.net-mvc-3,jquery,Ajax,Asp.net Mvc 3,Jquery,我认为问题在于jQuery,我不确定 让我解释一下情况 截图1 我填写partialView并单击submit submit是一个jQuery事件处理程序,其代码如下: _CreateOrEdit.cshtml <script type="text/javascript"> $(document).ready(function () { $('input[type=text], input[type=password], input[type=url], input[typ

我认为问题在于jQuery,我不确定

让我解释一下情况

截图1

我填写partialView并单击submit

submit是一个jQuery事件处理程序,其代码如下:

_CreateOrEdit.cshtml

<script type="text/javascript">
$(document).ready(function () {

    $('input[type=text], input[type=password], input[type=url], input[type=email], input[type=number], textarea', '.form').iTextClear();
    $("input:checkbox,input:radio,select,input:file").uniform();
    $("input[type=date]").dateinput();


});
$(window).bind('drilldown', function () {
    $(".tabs > ul").tabs("section > section");
});
$("#CreateOrEditSubmit").submit(function () {
    //get the form
    var f = $("#CreateOrEditSubmit");
    //get the action
    var action = f.attr("action");
    //get the serialized data
    var serializedForm = f.serialize();
                $.post(action, serializedForm, function (data) {
                    $("#main-content").html(data);
                });
    return false;

});
</script>
然后,它尝试再次重新显示相同的表单(控制器客户端、动作创建),但某些内容没有正确触发(屏幕截图2)。布局错误(按钮仍然隐藏),选项卡不工作(javascript)

最糟糕的是,我在Firebug、Chrome控制台中没有发现任何错误

有没有人知道问题出在哪里,因为我真的不知道发生了什么。在我看来,一切都没有改变,但它确实改变了

仅供参考,post功能的等效值为:

 var request = $.ajax({
        type: 'POST',
        url: action,
        data: serializedForm,
        success: function (data) {
            $("#main-content").html(data);
        },
        dataType: 'HTML'
    });

    request.done(function (msg) {
        $("#log").html(msg);
    });

    request.fail(function (jqXHR, textStatus) {
        alert("Request failed: " + textStatus);
    });

提交前,一切正常

提交后,调用相同的表单。jQuery不再工作了,表单也被阻塞了(我认为这是jQuery崩溃的“副”行为)

编辑:(根据要求) 这是完整的局部视图

_CreateOrEdit.cshtml目前不包含任何javascript,结果是一样的,所以我只发布了Create.cshtml

Create.shtml

@model BillingSoftwareOnline.Domain.Entities.Client

<div class="container_12 clearfix leading">
<div class="grid_12">
    @using (Html.BeginForm("Create", "Client", FormMethod.Post, new { @class="form has-validation", id="CreateOrEditSubmit"}))
    {

        @Html.Partial("_CreateOrEdit", Model)

        <div class="form-action clearfix">
            <button class="button" type="submit">
                OK</button>
            <button class="button" type="reset">
                Reset</button>
        </div>
    }
</div>
</div>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.itextclear.js")">    </script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.uniform.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.tools.min.js")">    </script>



<script type="text/javascript">
$(document).ready(function () {

    $('input[type=text], input[type=password], input[type=url], input[type=email],     input[type=number], textarea', '.form').iTextClear();
    $("input:checkbox,input:radio,select,input:file").uniform();
    $("input[type=date]").dateinput();


});
$(window).bind('drilldown', function () {
    $(".tabs > ul").tabs("section > section");
});
$("#CreateOrEditSubmit").submit(function () {
    //get the form
    var f = $("#CreateOrEditSubmit");
    //get the action
    var action = f.attr("action");
    //get the serialized data
    var serializedForm = f.serialize();
    //                $.post(action, serializedForm, function (data) {
    //                    $("#main-content").html(data);
    //                });
    var request = $.ajax({
        type: 'POST',
        url: action,
        data: serializedForm,
        success: function (data) {
            $("#main-content").html(data);
        },
        dataType: 'HTML'
    });
    return false;

    request.done(function (msg) {
        alert(msg);
    });

    request.fail(function (jqXHR, textStatus) {
        alert("Request failed: " + textStatus);
    });



});

</script>
@model BillingSoftwareOnline.Domain.Entities.Client
@使用(Html.BeginForm(“Create”,“Client”,FormMethod.Post,new{@class=“form has validation”,id=“CreateOrEditSubmit”}))
{
@Html.Partial(“_CreateOrEdit”,Model)
好啊
重置
}
$(文档).ready(函数(){
$('input[type=text]、input[type=password]、input[type=url]、input[type=email]、input[type=number]、textarea'、'.form').iTextClear();
$(“输入:复选框,输入:收音机,选择,输入:文件”).uniform();
$(“输入[类型=日期]”).dateinput();
});
$(窗口).bind('drilldown',函数(){
$(“.tabs>ul”).tabs(“节>节”);
});
$(“#CreateOrEditSubmit”).submit(函数(){
//拿到表格
变量f=$(“#CreateOreEdit提交”);
//采取行动
var action=f.attr(“action”);
//获取序列化数据
var serializedForm=f.serialize();
//$.post(操作、序列化格式、函数(数据){
//$(“#主要内容”).html(数据);
//                });
var请求=$.ajax({
键入:“POST”,
url:action,
数据:序列化格式,
成功:功能(数据){
$(“#主要内容”).html(数据);
},
数据类型:“HTML”
});
返回false;
request.done(函数(msg){
警报(msg);
});
请求失败(函数(jqXHR,textStatus){
警报(“请求失败:+textStatus”);
});
});

由于此标记作为部分返回,因此需要重新初始化javascript

这是一个很难理解的问题,但是试着把你的脚本放在部分视图中,而不是_CreateOrEdit.cshtml,看看这是否有效

更新

看到cshtml后,它看起来好像不工作了,因为在ajax加载之前,已经执行了$(document).ready()。请尝试以下方法:

$(function () {
    $('input[type=text], input[type=password], input[type=url], input[type=email], input[type=number], textarea', '.form').iTextClear();
    $("input:checkbox,input:radio,select,input:file").uniform();
    $("input[type=date]").dateinput();

    $(window).bind('drilldown', function () {
        $(".tabs > ul").tabs("section > section");
    });
   $("#CreateOrEditSubmit").submit(function () {
        //get the form
        var f = $("#CreateOrEditSubmit");
        //get the action
        var action = f.attr("action");
        //get the serialized data
        var serializedForm = f.serialize();
        //                $.post(action, serializedForm, function (data) {
        //                    $("#main-content").html(data);
        //                });
        var request = $.ajax({
            type: 'POST',
            url: action,
            data: serializedForm,
            success: function (data) {
                $("#main-content").html(data);
            },
            dataType: 'HTML'
        });
        return false;

        request.done(function (msg) {
            alert(msg);
        });

        request.fail(function (jqXHR, textStatus) {
            alert("Request failed: " + textStatus);
        });
    });
});

在ajax回调的末尾添加以下说明,以便在将表单注入DOM后应用样式:

$('input[type=text], input[type=password], input[type=url], input[type=email],     input[type=number], textarea', '.form').iTextClear();
$("input:checkbox,input:radio,select,input:file").uniform();
$("input[type=date]").dateinput();
$(".tabs > ul").tabs("section > section");

我的所有javascript文件都在我的partialview中引用,但似乎没有帮助。这是因为submit按钮:(顺便说一句,我把它放在了_CreateOrEdit.cshtml中,这样就可以对这两个文件都进行初始化了(“partialview”是在服务器端呈现的,而不是在客户端)。感谢您的尝试,虽然这似乎没有什么帮助,但请将代码放在partialview中,然后在_layout.cshtml中尝试(当然)抱歉,我错过了你的一些js。请看更新的答案,试一试。工作正常。太棒了。谢谢你的麻烦了!你能为Submit上加载的部分视图发布cshtml标记,包括脚本吗?完成,这是屏幕截图下面的代码。我从_createoredit.cshtml中删除了所有javascript,并将其放在create.cshtml中。结果是same(检查屏幕;-)工作正常。令人惊叹的。谢谢!
$('input[type=text], input[type=password], input[type=url], input[type=email],     input[type=number], textarea', '.form').iTextClear();
$("input:checkbox,input:radio,select,input:file").uniform();
$("input[type=date]").dateinput();
$(".tabs > ul").tabs("section > section");