ajaxForm插件一直重定向到操作页面,忽略返回false;
ajaxForm plugin keeps redirecting to action page ignoring the return false;
我有一个简单的表单,当用户完成图像选择后,在文件浏览窗口中单击打开时,就会提交该表单。
我的HTML看起来像下面的内容。
<form id="imgForm" action="action.php" method="post" enctype="multipart/form-data">
<div class="fileUpload btn btn-lg btn-primary">
<span>Choose File</span>
<input id="imageToBeUploaded" type="file" class="upload" name="image"/>
</div>
</form>
JavaScript
$("body").on('submit', '#imgForm', function(){
$(this).ajaxForm({target:'#uploadStatus'});
console.log("submitting...");
return false;
});
/* Uploading Profile BackGround Image */
$('body').on('change','#imageToBeUploaded', function() {
//submit the form
$("#imgForm").submit();
});
我的问题是表单被提交,但重定向到action.php页面并得到响应。我希望在当前页面上得到回复的同时阻止重定向的发生。return false;似乎不符合http://malsup.com/jquery/form/#ajaxSubmit
如有任何帮助,我们将不胜感激!
请注意,我必须支持IE8/9,这意味着formData是不可能的!
谢谢。
尝试实现以下代码:
window.location.href
是一个属性,它将告诉您浏览器的当前URL位置。更改属性的值将重定向页面。
$("body").on('submit', '#imgForm', function(){
var a;
var b;
window.location.href = "../currenturl.htm?parameter1="+a+"¶meter2="+b;
or
window.location.href = "../currenturl.htm";
//where your browser need to stay(current) url should be mentioned here.
});
只需尝试此JavaScript/jQuery代码并使用服务器脚本进行管理。
$(document).ready(function (e) {
/* Uploading Profile BackGround Image */
$('#imageToBeUploaded').on('change', function() {
//submit the form
$("#imgForm").submit();
alert('Form submitted');
});
$('#imgForm').ajaxForm({
target:'#uploadStatus',
beforeSubmit:function(){
alert('File uploading...');
},
success:function(){
alert('File uploaded');
},
});
});
祝你好运
您引用的页面是关于$(this).ajaxSubmit(options);
而不是$(this).ajaxForm(options);
的。你试过$(this).ajaxSubmit(options);
吗?这两者不是同义词。您似乎混淆了它们的实现。
根据文档,以下是如何使用ajaxSubmit()
:
$(document).ready(function() {
$('#imgForm').on('submit', function(){
$(this).ajaxSubmit({target:'#uploadStatus'});
console.log("submitting...");
return false;
});
$('#imageToBeUploaded').on('change', function() {
//trigger submit event
$("#imgForm").submit();
});
});
和ajaxForm()
:
$(document).ready(function() {
$('#imgForm').ajaxForm({target:'#uploadStatus'});
$('#imageToBeUploaded').on('change', function() {
//trigger submit event
$("#imgForm").submit();
});
});
除非迫不得已,否则您不希望使用委托事件。如果表单是在DOM就绪事件之后加载的,那么决不使用委托事件。
来自:在表单提交ajax/jquery 时防止页面重新加载和重定向
$("body").on('submit', '#imgForm', function(event){
$(this).ajaxForm({target:'#uploadStatus'});
console.log("submitting...");
event.preventDefault();
return false;
});
/* Uploading Profile BackGround Image */
$('body').on('change','#imageToBeUploaded', function(event) {
//submit the form
$("#imgForm").submit();
});
$(document).ready(function (e) {
/* Uploading Profile BackGround Image */
$('#imageToBeUploaded').on('change', function() {
//submit the form
$("#imgForm").submit();
alert('Form submitted');
});
$('#imgForm').ajaxForm({
target:'#uploadStatus',
beforeSubmit:function(){
alert('File uploading...');
},
success:function(){
alert('File uploaded');
},
});
});
你可以试试这个:
使用$(this(.colosest("#imgForm"(.submit((
而不是:$("#imgForm"(.submit((
$('#imageToBeUploaded').on('change', function() {
//submit the form
$(this).closest("#imgForm").submit();
$("#imgForm").submit();
});
$('form#imgForm').on('submit',function(e){
e.preventDefault();
$(this).ajaxSubmit({
url: 'upload',
uploadProgress: function (event, position, total, percentComplete){
//display status
$(".progress-bar").width(percentComplete + '%');
$('.progress-bar').html(percentComplete+'%');
},
success: function(response){
alert('Success');
},
error: function(response, status, e){
alert('Oops something went.');
},
resetForm: true
});
});
您需要在脚本标记<https://code.google.com/p/struts2-jquery/source/browse/trunk/struts2-jquery-plugin/src/main/resources/template/js/plugins/jquery.form.min.js?r=1645>
试试这个
$(document).ready(function() {
$("#imgForm").ajaxForm({
target:'#uploadStatus'
});
});
$('body').on('change','#imageToBeUploaded', function() {
//submit the form
$("#imgForm").submit();
});
您应该使用event.prventDefault((;而不是使用jQuery 返回false
$("body").on('submit', '#imgForm', function(event){
event.preventDefault();
$(this).ajaxForm({target:'#uploadStatus'});
console.log("submitting...");
return false;
});
很多人可能不同意我的观点,但返回false通常意味着失败,而您的ajax提交实际上可能工作得很好,所以它可能会给您的原始调用者带来好坏参半的结果。在这种情况下,这并不重要,但只有当某个东西真的失败或出错时,或者当请求布尔值时,我才会返回false。如果结果为空,我将返回null,而不是false。我想只是定罪。。
不确定为什么你有2个js函数,但你可以将这两个函数组合为:
$(document).ready(function() {
/* Uploading Profile BackGround Image */
$('body').on('change','#imageToBeUploaded', function() {
//submit the form
$('#imgForm').ajaxForm({target:'#uploadStatus'});
console.log("submitting...");
});
});
- Array.every返回false,而不是类型error
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 为什么当我在数组上测试regex时,它会返回false
- 检查文本区域是否为空总是返回false
- PHP strtotime()为JavaScript日期字符串返回false
- onsubmit返回false,但submit仍然执行
- 这个代码会返回false吗
- Ajax向表单返回false
- 表单验证JavaScript编号总是返回false
- 使用!而in运算符在应该为true时返回false,为什么
- jQuery.is(':checked')总是返回false
- Javascript 下划线每个总是返回 false
- 提交返回 false 总是在 jquery 中
- 为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的
- 如果循环中至少有一个元素返回 false,如何将变量设置为 false
- 基本JavaScript不断返回false
- 布尔对象上的逻辑 NOT 在 Javascript 中总是返回 false
- jquery focusin没有'调用.focus()并返回false;时无效;
- Ajax-执行成功前返回false
- jQuery JSON flickr提要返回false不工作