Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在将文件上载到服务器之前刷新页面,可替代默认功能_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 在将文件上载到服务器之前刷新页面,可替代默认功能

Javascript 在将文件上载到服务器之前刷新页面,可替代默认功能,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我试图使用ajax从表单上传文件,但我面临一个问题,当我提交表单时,页面会刷新,因此文件不会完全上传到服务器,下面是我的代码: <form enctype="multipart/form-data"> <input id="sortpicture" type="file" name="sortpic" /> <button id="upload">Upload</button> </form> php文件: &l

我试图使用ajax从表单上传文件,但我面临一个问题,当我提交表单时,页面会刷新,因此文件不会完全上传到服务器,下面是我的代码:

<form enctype="multipart/form-data">
     <input id="sortpicture" type="file" name="sortpic" />
     <button id="upload">Upload</button>
 </form>
php文件:

<?php

if ( 0 < $_FILES['file']['error'] ) {
    echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
    move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);

}

?>

我不想使用函数preventDefault(),你们知道它的替代方法吗?

谢谢。

好的,那么您希望在上传文件后提交表单吗?然后将
preventDefault
添加到单击处理程序中(或使用
type=“button”
),并在成功回调中添加
$(“#myForm”).submit()
(当然要给表单一个ID)。

好的,那么您想在上传文件后提交表单吗?然后将
preventDefault
添加到单击处理程序中(或使用
type=“button”
),并在成功回调中添加
$(“#myForm”).submit()
(当然要给表单一个ID)。

您在这里混淆了两种不同的方法

使用
AJAX
,您将信息发送到服务器,并(通常)等待来自服务器的结果,而不刷新页面

使用
SUBMIT
,您向服务器发送一个请求,并用结果替换当前页面(因此任何AJAX方法都将不再在页面上接收结果)


另一方面,正如您所提到的,提交表单后页面上会发生什么事件?

您在这里混淆了两种不同的方法

使用
AJAX
,您将信息发送到服务器,并(通常)等待来自服务器的结果,而不刷新页面

使用
SUBMIT
,您向服务器发送一个请求,并用结果替换当前页面(因此任何AJAX方法都将不再在页面上接收结果)


另一方面,正如您所提到的,在提交表单后,页面上会发生哪些事件?

请告诉我们您为什么不想使用解决问题的特殊声明?或者,只需制作按钮
type=“button”
我想您也可以使用
。但是是的,为什么不preventDefault?这是一个wordpress插件,所以我不想阻止客户端提交表单后发生的事件。请告诉我们为什么你不想使用解决问题的特殊声明?或者,只需制作按钮
type=“button”
我想您也可以使用
。但是是的,为什么不preventDefault呢?这是一个wordpress插件,所以我不想阻止客户端表单提交后发生的事件。提交事件会导致页面刷新。这很好,如果你想先执行ajax方法,然后提交表单,@Emilpalson有你的解决方案。非常感谢!导致页面刷新的提交事件。没关系,如果您想先执行ajax方法,然后提交表单,@emilpalson有您的解决方案。非常感谢!
<?php

if ( 0 < $_FILES['file']['error'] ) {
    echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
    move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);

}

?>