我正在尝试使用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>
答案 0 :(得分: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不正确。 如果您同时收到两个警报,那么最可能的情况是服务器返回错误
答案 1 :(得分:0)
我认为您最好通过选项在ajaxForm中指定所需的回调。
e.g。
$('#myImageForm').ajaxForm({
success: function () { ... }
});
另外,请注意,submit()将是一个异步函数,因此警告(&#34;提交&#34;);无论提交是成功还是失败,都会被调用。
答案 2 :(得分: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";
}
你必须有一个提示“ok”。 你也可以发布ajaximage.php并告诉我们你正在使用的jquery版本吗?