Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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
Javascript AjaxSubmit不是DOM重载上的函数_Javascript_Jquery_Forms_Ajaxform - Fatal编程技术网

Javascript AjaxSubmit不是DOM重载上的函数

Javascript AjaxSubmit不是DOM重载上的函数,javascript,jquery,forms,ajaxform,Javascript,Jquery,Forms,Ajaxform,我有下面的代码 $('body').on('submit', '.some-form', function (event) { $(this).ajaxSubmit({ dataType: 'json', success: function (data, statusText, xhr, form) { var url = 'some/url'; // Reload the form markup/DOM

我有下面的代码

$('body').on('submit', '.some-form', function (event) {
    $(this).ajaxSubmit({
        dataType: 'json',
        success: function (data, statusText, xhr, form) {
            var url = 'some/url';

            // Reload the form markup/DOM using the response
            $.ajax({
                dataType: 'html',
                type: 'get',
                url: url
            }).done(function (html) {
                // get markup from url and replace the form markup ...    
            });
        },
        error: function () {
            alert('error');
        }
    });

    return false; 
});
基本上我在这里做的是

  • 提交并处理表格
  • 得到结果
  • 如果成功,请从页面获取新表单标记,然后替换当前表单标记。 如果失败,则显示错误
  • 现在,因为我将submit事件委托给了body,所以应该没有问题 在新加载的表单标记上处理提交

    函数处理程序工作正常,直到我看到这个错误

    TypeError: $(...).ajaxSubmit is not a function
    
    error: function () {
    
    知道为什么会这样吗?这意味着ajaxSubmit不存在,但我没有重新加载 这一页


    编辑:是的,我使用的是

    我的钱在下面:

    在您的HTML请求中:

    //从url获取标记并替换表单标记…

    您正在加载一个包含jQuery库的完整页面。当您这样做时,HTML响应中的新jQuery脚本将被下载、解析和执行,它将覆盖当前的jQuery原型,这意味着jQuery.ajaxSubmit不再可访问

    很聪明吧


    解决这一问题的最佳方法是不请求包含jQuery脚本的完整页面,而是请求仅包含所需DOM结构的URL,而不是包含页眉、页脚、脚本等的完整页面。

    是否加载了jQuery表单插件?确实,我的想法是ajaxSubmit函数到底从何而来。为什么需要ajaxSubmit?Jquery-Ajax可以完成上述任务。@STEEL因为我需要通过Ajax上传文件。在我看来,我已经在这么做了。我调用的页面不包含诸如页眉、页脚或布局等无关数据。好的,但我可以向您保证,如果您查看“网络”选项卡,您将在第一次执行请求后看到一个新的jQuery脚本被下载。在您的
    $(this.ajaxSubmit()
    )之前尝试此操作,
    console.log($)
    console.log($.fn)
    )-这是第一次您会看到
    ajaxSubmit
    $.fn
    对象的一种方法,第二次您不会,但当您
    console.log($)
    时,它看起来应该是相同的。这意味着您的
    $.fn
    在第一个请求之后但在第二个请求之前的某个位置被覆盖,这意味着将无法再访问.ajaxSubmit。