1

我正在尝试使用 JQuery 提交 Ajax 表单,但无法发现问题:

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

                    $('#photoimg').live('change', function()
                    {
                        $("#emailpreviewloader").html('');
                        $("#emailpreviewloader").html('<img width="180" src="/loader.gif" alt="Uploading...."/>');

                        $('#myImageForm').ajaxForm(function() {
                            alert("Thank you for your comment!");
                        });

                        alert("about to submit");
                        $('form#myImageForm').submit();
                        alert("submitted");
                    });
                });
            </script>

两个警报都会触发:“即将提交”和“已提交”,但“感谢您的评论”永远不会触发。

知道有什么问题吗?

编辑 :

表格代码:

<form id="myImageForm" method="post" enctype="multipart/form-data" action="/ajaximage.php">
                            <input type="file" name="photoimg" id="photoimg" />
                        </form>
4

3 回答 3

2
$(document).ready(function()
                {
                    $('#myImageForm').ajaxForm({
                       beforeSend : function(){alert('about to submit')},
                       complete:function(){alert('submited and result recieved')}
                    });
                    $('#photoimg').change( function()
                    {
                        $("#emailpreviewloader").html('');
                        $("#emailpreviewloader").html('<img width="180" src="/loader.gif" alt="Uploading...."/>');

                        $('form#myImageForm').submit();
                        alert("submitted");
                    });
                });

试试这个代码,看看你是否得到一个即将提交或一个已提交并收到结果的警报

如果您没有收到即将提交的警报,那么您调用 .ajaxForm 的元素可能不正确。如果您同时收到两个警报,那么最可能的情况是服务器返回错误

于 2013-08-07T07:33:12.360 回答
0

我认为您最好通过选项在 ajaxForm 中指定所需的回调。

例如

$('#myImageForm').ajaxForm({
  success: function () { ... }
});

另外,请注意 submit() 将是一个异步函数,因此 alert("submitted"); 无论提交是成功还是失败,都会被调用。

于 2013-08-07T07:49:41.637 回答
0

尝试不使用 jquery 表单插件,看看发生了什么:

$(document).ready(function()
                {
/*
                  $('#myImageForm').ajaxForm({
                       beforeSend : function(){alert('about to submit')},
                       complete:function(){alert('submited and result recieved')}
                    });
*/

                    $('#photoimg').change( function()
                    {
                        $("#emailpreviewloader").html('');
                        $("#emailpreviewloader").html('<img width="180" src="/loader.gif" alt="Uploading...."/>');

                        $.post("ajaximage.php",{ photoimg:$(this).val()} ,function(data)
                        {
                            alert(data);
                        })
                       .fail( function(xhr, textStatus, errorThrown) {
                           alert(xhr.responseText);});
                    });
                  });

然后在你的 php 文件中:

$photoimg=$_POST['photoimg'];
if($photoimg){
    echo "ok";
}

你必须有一个警报说“好的”。您还可以发布 ajaximage.php 并告诉我们您正在使用的 jquery 版本吗?

于 2013-08-07T09:14:39.343 回答