如何通过jquery ajax发布表单数据时从php检索回显数据
How to retrieve echoed data from php when posting form data via jquery ajax?
我想通过ajax将文件从文件输入表单传递到php脚本,并处理我的php脚本回显的消息。
这是我的 html 表单:
<form id="fileUploadForm" method="POST" enctype="multipart/form-data">
<input name="fileToUpload" id="fileToUpload" type="file">
<button type="submit" name="submit" id="submit">Upload</button>
</form>
我的JS代码:
$('#submit').click(function() {
var file_data = $('#fileToUpload').prop('files')[0];
var form_data = new FormData();
form_data.append('fileToUpload', file_data);
$.ajax({
url: 'form.php',
dataType: 'text',
data: form_data,
processData: false,
contentType: false,
type: 'post',
success: function(data) {
alert(data);
},
});
和我的(简化)PHP 脚本:
<?php
//some code
if(fileTooLarge){
echo "Your file is too large!";
}
if(success){
echo "Your file has been uploaded";
}
?>
我想要实现的是,如果文件上传成功或文件太大/扩展名错误,用户会收到一条消息,而无需重新加载页面。
<button type="submit" name="submit" id="submit">Upload</button>
将type
更改为按钮
- 因为类型是提交并且它是形式上的,所以它正在执行按钮类型提交的默认功能,而不是 ajax 默认函数
您可以将
JS代码更改为:
$('#submit').click(function(evt) {
evt.preventDefault();
...
或者,您可以将输入类型更改为按钮而不是提交
如果你想实现这一点,你可以在现代浏览器中的客户端尝试这个。它对我来说效果很好。在 W3c 文件中,对象从 Blob 继承属性"size"。https://www.w3.org/TR/FileAPI/#dfn-Blob
在铬上上次更新中测试。
<!DOCTYPE html>
<html>
<head>
<title>InputFileTest</title>
<!--<script type="text/javascript" src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
<script type="text/javascript" src="inputFile.js"></script>!-->
<script type="text/javascript">
function validateSize(pFile){
if (pFile.files[0].size > 9999999999999) {
alert("Your file is not valid, it exceed our limit!")
return false
}
return true
}
function validateExtension(pFile){
var fileName = pFile.files[0].name;
var extension = "";
for (var i = fileName.length - 1; i >= 0; i--) {
if (fileName[i] == ".") {
break
} else {
extension = fileName[i] + extension;
}
}
if (extension == "bmp") {
alert("Extension not permited!")
return false;
}
return true;
}
function validatingFile(){
var file = document.getElementsByClassName("file")[0];
if (file.files.length > 0) {
valid = validateSize(file);
valid = validateExtension(file);
if (valid) {
alert("Upload it!");
}
} else {
alert("Select a valid file!");
}
}
</script>
</head>
<body>
<input type="file" name="file" class="file">
<button onclick="validatingFile()">Sumit</button>
</body>
</html>
相关文章:
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 巨大的数据和PHP错误
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- json-ajax动画防止通过php发送数据
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 将数据保存到数据库(ajax/php)后,使文本字段变灰/禁用
- 为什么数据没有从ajax传递到php
- 如何将JavaScript变量的数据传递到另一个php页面
- 使用外部ajax数据PHP绘制图表
- IE不发送发布数据PHP&jQuery
- 如何将数据 php 更改为 javascript json
- 如何插入数据 PHP JavaScript MySQL 与多个数组
- 将数据PHP(客户端)传递给C#(服务器端)
- 跨会话保存数据- php
- 从AJAX调用操作数据:PHP或Javascript
- 如何在jQuery中获取数据- PHP中的多重标签选择
- Ajax显示动态数据php在html下拉
- 使用azax &获取数据;php