从表单提交获取 JSON 响应
Get JSON response from Form Submit
我不是前端开发人员,我花了相当多的时间尝试这样做。希望你们能帮助我。我有一个将文件发送到服务器中的 API 的表单,如下所示:
<form id="uploadForm" action="url/upload/" method="post" enctype="multipart/form-data" accept-charset="ISO-8859-1">
<div class="inputFileCustom">
<input type="file" size="45" name="file" id="uploadFiles" accept="application/pdf"/>
<label for="uploadFiles">
<div class="ic-bt ic-bt-details ic-bt-text btn btn-border">
Choose a file
</div>
</label>
</div>
<input type="submit" value="Upload PDF" class="btn btn-primary" />
</form>
url/upload
返回一个 JSON,如下所示:
{ "status": "ok"/"fail" }
我需要两样东西:
- 阻止提交重定向到
url/upload
; - 从服务器获取 JSON 响应,如果成功,则调用
loadFiles()
函数(该函数已在工作)。
我正在使用javascript来实现loadFiles()
功能,但它非常简单。
您可以将 jquery 表单处理程序用作,
<script>
// Attach a submit handler to the form
// Attach a submit handler to the form
$("#uploadForm").submit(function(event) {
var formData = new FormData();
formData.append("uploadFiles", $('[name="file"]')[0].files[0]);
event.stopPropagation();
event.preventDefault();
$.ajax({
url: $(this).attr("action"),
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function(data) {
alert(data);
loadFiles()
}
});
return false;
});
</script>
请参阅此堆栈溢出问题
看起来你需要使用 Javascript 发布请求。如果您使用的是 JQuery,则可以使用 $.ajax
例如:
$.ajax({
url: '',
type: '',
data: {},
success: function(data){
console.log(data);
}
})
使用此选项意味着它不会将页面重定向到窗体之外,以便您可以在同一屏幕上显示成功或错误消息。
有关详细信息,请参阅 http://api.jquery.com/jquery.ajax/
检查这个小提琴:https://jsfiddle.net/41mnz0z1/
$('#uploadForm').submit(function(e) {
e.preventDefault();
$.ajax({
url: '/echo/json/',
data: $(this).serialize(),
type: 'POST',
success: function(data) {
alert(data);
}
});
});
e.preventDefault()
阻止浏览器在提交表单后执行标准操作(将您重定向到另一个页面)。 data: $(this).serialize()
将表单数据发送到所需的url: 'fileUpload.php'
。
它与文件的工作方式相同。
1. Prevent submit to redirect to url/upload
<form id="uploadForm" action="url/upload/" method="post" enctype="multipart/form-data" accept-charset="ISO-8859-1" onsubmit ='return checkRegistration()'>
<div class="inputFileCustom">
<input type="file" size="45" name="file" id="uploadFiles" accept="application/pdf"/>
<label for="uploadFiles">
<div class="ic-bt ic-bt-details ic-bt-text btn btn-border">
Choose a file
</div>
</label>
</div>
<input type="submit" value="Upload PDF" class="btn btn-primary" />
</form>
<script>
function checkRegistration(){
if(!form_valid){
return false;
}
return true;
}
</script>
相关文章:
- http请求使用html而不是json进行响应
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 使用来自不同异步函数的响应创建一个json对象
- 无法访问响应 JSON 对象
- 使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错
- 使用官方 Node.js SendGrid API 发送电子邮件时,响应 JSON 中可能出现哪些错误消息
- 无法从响应 JSON 中删除 html 标记
- 当响应 JSON 对象数据计数为零时,AJAX 成功回调函数重定向到错误回调
- 拆分 AJAX 响应 (JSON)
- jquery ajax 响应中缺少响应 JSON
- AJAX返回200成功,但未能解析响应JSON
- 向声音云响应json添加一个变量
- Node.js请求-Can't获取REST响应(JSON)的属性
- 如何使用javascript在for循环中获取响应json数据
- 下拉列表中未设置 AJAX 响应 JSON 数据
- Fetch api,为什么我必须在响应json()上使用它,试图让承诺有意义
- 如何使用ajax响应JSON数据
- 响应.json() 上的“意外输出结束”错误