Ajaxform&;jQuery对话框-表单提交两次

Ajaxform&;jQuery对话框-表单提交两次,jquery,ajaxform,Jquery,Ajaxform,这是一个场景——我有一个页面,其中有一个打开jQueryUI对话框的链接。对话框中有一个小表单(用于上传图像)。“操作”页面处理并返回要返回到对话框的图像 现在,这一切都如预期的那样工作-然而,出于某种原因,它被处理了两次。从视觉上看,没有什么可以显示它被提交和处理了两次(我只知道因为我使用的是Firebug,我试图找出为什么处理时间比预期的要长) 看看前面的答案,建议jQuery代码应该在对话框之外,但它已经在对话框之外了。我已经用尽了我现在能想到的一切办法。我是JS/jQuery新手,所以完

这是一个场景——我有一个页面,其中有一个打开jQueryUI对话框的链接。对话框中有一个小表单(用于上传图像)。“操作”页面处理并返回要返回到对话框的图像

现在,这一切都如预期的那样工作-然而,出于某种原因,它被处理了两次。从视觉上看,没有什么可以显示它被提交和处理了两次(我只知道因为我使用的是Firebug,我试图找出为什么处理时间比预期的要长)

看看前面的答案,建议jQuery代码应该在对话框之外,但它已经在对话框之外了。我已经用尽了我现在能想到的一切办法。我是JS/jQuery新手,所以完全有可能我遗漏了一些简单的东西。无论哪种方式,指针都很受欢迎!下面是我的代码

 <head[...]>
 <script>
 $(function() {
 $('#submitImage').bind('click', function(){
    $(".preview").html('');
    $(".preview").html('<img src="/images/elements/loaders/103.png" alt="Uploading...." style="text-align:center;"//>');
    $("#imgadd").ajaxForm({
    clearForm: 'true',
    target: '.preview'
    }).submit();
});
});
 </script>

$(函数(){
$('#submitImage').bind('click',function(){
$(“.preview”).html(“”);
$(“.preview”).html(“”);
$(“#imgadd”).ajaxForm({
clearForm:'真',
目标:'.preview'
}).submit();
});
});
[…页面的其余部分]

 <!-- Dialog -->

 <div id="customDialog" class="customDialog" title="Upload or Insert Image">

 <form id="imgadd" action="a_blogimgupload.cfm" method="post" enctype="multipart/form-data">
 <input type="file" class="fileInput" name="blogimg" />&nbsp;<input type="submit" id="submitImage" value="Upload" /></form>

 <div class="preview">
 <ul>
 <li><img src="imgthumb.png" alt="" /><a href="javascript:;" title="Insert" onclick="addImage('imgfull.png');return false;">Insert</a></li>
</ul> 
</div>


。ajaxForm
用于准备表单,以便与ajax一起发送。您可以使用它——该表单的每次提交都将使用AJAX完成。 所以,您必须将代码移到下面的外部单击

$("#imgadd").ajaxForm({
    clearForm: 'true',
    target: '.preview'
    })
(另外,您不需要在单击处理程序中调用.submit(),因为它已经导致提交) 或者,您可以按如下方式更改代码:

$('#submitImage').bind('click', function(e){
    $(".preview").html('');
    $(".preview").html('<img src="/images/elements/loaders/103.png" alt="Uploading...." style="text-align:center;"//>');
    $("#imgadd").ajaxForm({
    clearForm: 'true',
    target: '.preview'
    }).submit();
    e.preventDefault();
});
$('submitImage').bind('click',函数(e){
$(“.preview”).html(“”);
$(“.preview”).html(“”);
$(“#imgadd”).ajaxForm({
clearForm:'真',
目标:'.preview'
}).submit();
e、 预防默认值();
});
其中
e.preventDefault()
(好吧,从来没有尝试过这样的事情,也许你也需要做e.stopPropagation(),但我不这么认为)将阻止浏览器执行默认操作,即提交。但最好是在这里做第一件事


此外,还有
.ajaxSubmit()
接受与ajaxForm相同的选项,但它也会导致立即提交。但是如果您要使用它,您将需要删除
。提交
e。仍然需要preventDefault

谢谢李。我的在IE中发布了多次。现在我的也在IE中工作。发布我的一些javascript

$(document).ready(function () {
$("#uploadSubmit").button().click(function (e) {
    submitUploadForm();
    e.preventDefault();
    return false;
});

});

function submitUploadForm() {
$(function () {
    $('#reportOptions').ajaxForm({
        success: SubmitSuccesful,
        error: AjaxError,
        type: 'post',
        cache: false,
        url: baseHref() + 'Upload'
    }).submit();
});
}

非常感谢。我在第一次尝试中得到了你的第二个例子。非常感谢!