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;
});
基本上我在这里做的是
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。