Javascript 当通过jQueryAjax发布表单数据时,如何从php检索回显数据?
我想通过ajax将文件从文件输入表单传递到php脚本,并处理我的php脚本所回显的消息。Javascript 当通过jQueryAjax发布表单数据时,如何从php检索回显数据?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我想通过ajax将文件从文件输入表单传递到php脚本,并处理我的php脚本所回显的消息。 这是我的html表单: 和我的(简化)php脚本: 我想实现的是,如果文件上载成功或文件太大/扩展名错误,用户在不重新加载页面的情况下会收到一条消息。上载更改类型至按钮 因为类型是submit,并且是表单,所以它执行的是按钮类型submit的默认功能,而不是ajax类型 您可以将js代码更改为: $('#submit').click(function(evt) { evt.preventDefaul
这是我的html表单: 和我的(简化)php脚本:
我想实现的是,如果文件上载成功或文件太大/扩展名错误,用户在不重新加载页面的情况下会收到一条消息。上载
更改类型
至按钮
您可以将js代码更改为:
$('#submit').click(function(evt) {
evt.preventDefault();
...
或者您可以将输入的类型更改为按钮而不是提交。如果您想实现这一点,您可以在现代浏览器的客户端上尝试。这对我来说很好。 在W3c文件中,对象从Blob继承属性“size”。 在chrome上一次更新中测试
<!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>
输入文件测试
函数validateSize(pFile){
如果(pFile.files[0]。大小>999999999){
警报(“您的文件无效,超出了我们的限制!”)
返回错误
}
返回真值
}
函数validateExtension(pFile){
var fileName=pFile.files[0]。名称;
var扩展=”;
对于(var i=fileName.length-1;i>=0;i--){
如果(文件名[i]==”){
打破
}否则{
扩展名=文件名[i]+扩展名;
}
}
如果(扩展名=“bmp”){
警报(“不允许扩展!”)
返回false;
}
返回true;
}
函数validatingFile(){
var file=document.getElementsByClassName(“文件”)[0];
如果(file.files.length>0){
valid=validateSize(文件);
valid=validateExtension(文件);
如果(有效){
警报(“上传它!”);
}
}否则{
警报(“选择有效文件!”);
}
}
苏米特
上传
将类型更改为按钮
尝试控制台.log()
而不是警报()
,然后查看开发人员工具中的控制台,查看数据的结构。请注意,上传文件之前最好先检查文件大小,否则,您必须等待整个文件上载到服务器,然后才能被告知该文件无效。请参阅,了解如何更改按钮类型,因为您的原始代码正常提交表单,而忽略了AJAX请求。您还可以通过将事件挂接到表单的submit()
事件并使用e.preventDefault()来修复此问题
@0x1234因为类型是submit,并且它是在表单中,所以它执行的是按钮类型submit的默认功能,而不是ajax类型。请注意:D。顺便问一下,使用此方法或e.preventDefault()方法@Rory McCrossan也建议了哪些优点或缺点?@0x1234 happy它为您工作了mate happy编码:)
$('#submit').click(function(evt) {
evt.preventDefault();
...
<!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>