在HTTP中有两种POST数据的方式:application/x-www-form-urlencoded和multipart/form-data.据我所知,大多数浏览器只能在使用时上传文件multipart/form-data.在API上下文中使用其中一种编码类型时是否有任何其他指导(不涉及浏览器)?这可能基于:
到目前为止,我基本上没有在网上找到有关使用不同内容类型的正式指导.
我正在尝试使用fetch POST一个JSON对象.
根据我的理解,我需要将一个字符串化的对象附加到请求的主体,例如:
fetch("/echo/json/",
{
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: "POST",
body: JSON.stringify({a: 1, b: 2})
})
.then(function(res){ console.log(res) })
.catch(function(res){ console.log(res) })
Run Code Online (Sandbox Code Playgroud)
当使用jsfiddle的json echo时,我希望看到我发送的对象({a: 1, b: 2}),但这不会发生 - chrome devtools甚至不会将JSON显示为请求的一部分,这意味着它没有被发送.
如何将HTML5 FormData对象转换为JSON?没有Jquery并像处理对象一样处理FormData中的嵌套属性.
这里说它是必需的
http://www.w3schools.com/tags/att_form_action.asp
但我发现即使我没有指定一个动作属性,表单也会被提交,并且表单会被提交到当前页面,这正是我想要的.
也许有人可以帮我解决我遇到的这个小问题.我试图在没有页面刷新的情况下提交此表单.但它会跳过帖子并直接转到ajax调用.我想我想念了preventDefault().我在网上搜索但无法找到我需要的东西.非常感谢您的帮助或指向另一个表单提交.
HTML下面:
<!DOCTYPE html>
<html>
<head>
<title>AJAX | Project</title>
<link href="project.css" rel="stylesheet"/>
<script src="jquery.js"></script>
</head>
<body>
<div id="mainCon">
<h1>Contact Book</h1>
<div id="form_input">
<form id="myform" method="post" action="addrecord.php">
<label for="fullname">Name:</label>
<input type="text" name="fullname" id="fullname"/><span id="NameError"> </span>
<br/>
<label for="phonenumber">Phone Number:</label>
<input type="text" id="phonenumber" name="phonenumber"><span id="PhoneError"></span>
<br />
<input id="buttton" type="submit" onClick="addnumber()" value="Add Phone Number"/>
<input type="button" id="show" value="the Results"/>
</form>
</div>
<div id="form_output">
</div>
</div>
<script src="project.js"></script>
<script type="text/javascript">
function addnumber(){
var Fullname = document.getElementById("fullname").value;
var Phonenumber = document.getElementById("phonenumber").value;
if(Fullname == ""){ …Run Code Online (Sandbox Code Playgroud) 我有一个用JavaScript构建的函数,我希望在表单提交被执行后执行.它基本上完全改变了页面的外观.但我需要搜索框中的变量才能继续使用JavaScript.此刻它会闪烁并重置那里的内容,因为它会重新加载页面.
所以我在我的函数中设置了一个返回false,这使得它不会这样做,但我想要的变量不会通过表单提交.关于我应该怎么做才能得到它的任何想法?只要该updateTable()功能有效,页面就可以刷新,并且页面重置不会重置.
<form action="" method="get" onsubmit="return updateTable();">
<input name="search" type="text">
<input type="submit" value="Search" >
</form>
Run Code Online (Sandbox Code Playgroud)
这是updateTable功能:
function updateTable() {
var photoViewer = document.getElementById('photoViewer');
var photo = document.getElementById('photo1').href;
var numOfPics = 5;
var columns = 3;
var rows = Math.ceil(numOfPics/columns);
var content="";
var count=0;
content = "<table class='photoViewer' id='photoViewer'>";
for (r = 0; r < rows; r++) {
content +="<tr>";
for (c = 0; c < columns; c++) {
count++;
if(count == numOfPics) break; // check if …Run Code Online (Sandbox Code Playgroud) 我正在为我的应用程序开发类开发一个网站,我有一个最奇怪的问题.
我使用一些JQuery将表单数据发送到名为'process.php的php页面,然后将其上传到我的数据库.奇怪的错误是页面在提交表单时重新加载,我不能或我的生活中弄清楚如何让JQuery继续在后台运行.这首先是使用JQuery的重点哈哈.无论如何,我会提交所有相关代码,如果您还有其他需要,请告诉我.
<script type="text/JavaScript">
$(document).ready(function () {
$('#button').click(function () {
var name = $("#name").val();
var email = $("#email").val();
$.post("process.php", {
name: name,
email: email
}).complete(function() {
console.log("Success");
});
});
});
</script>
<div class= "main col-xs-9 well">
<h2 style="color: black" class="featurette-heading">Join our mailing list!</h2>
<form id="main" method = "post" class="form-inline">
<label for="inlineFormInput">Name</label>
<input type="text" id="name" class="form-control mb-2 mr-sm-2 mb-sm-0" id="inlineFormInput" placeholder="Jane Doe">
<label for="inlineFormInputGroup">Email</label>
<div class="input-group mb-2 mr-sm-2 mb-sm-0">
<input type="text" id="email" class="form-control" id="inlineFormInputGroup" placeholder="janedoe@email.com">
</div>
<!--Plan to write success message …Run Code Online (Sandbox Code Playgroud) 我有如下表格,它需要向我的 java Servlet 发送一个操作来更新数据库。
如何在没有页面重新加载的情况下提交表单?目前action="myServlet"它让我直接进入一个新页面。如果我删除对 myServlet 的操作,则输入不会添加到我的数据库中。
<form name="detailsForm" method="post" action="myServlet"
onsubmit="return submitFormAjax()">
name: <input type="text" name="name" id="name"/> <br/>
<input type="submit" name="add" value="Add" />
</form>
Run Code Online (Sandbox Code Playgroud)
在我的 Java servlet 视图中,request.getParameter将查找名称并继续将其添加到我的数据库中。
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
if (request.getParameter("add") != null) {
try {
Table.insert(name);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的 JavaScript 部分,我有一个submitFormAjax函数
function submitFormAjax()
{
var xmlhttp;
if (window.XMLHttpRequest) {
// code for modern browsers
xmlhttp …Run Code Online (Sandbox Code Playgroud) 我希望有一个超时功能,所以当提交表单时,提交后两秒显示警报.我使用的代码不起作用:
$(document).ready(function() {
$("#newsletter").submit(function() {
setTimeout(function() {
alert("submitted");
}, 2000);
});
});
Run Code Online (Sandbox Code Playgroud)
但是当我将2000ms更改为900时似乎工作正常:
$(document).ready(function() {
$("#newsletter").submit(function() {
setTimeout(function() {
alert("submitted");
}, 900);
});
});
Run Code Online (Sandbox Code Playgroud)
如何让2000ms工作?
我有这段代码:
<form name="myUploadForm" method="post" action="/scripts/upload.do" enctype="multipart/form-data" id="fileUpload">
<table width="100%" border="0">
<tr>
<td>
<input type="file" name="xlsFile" size="60" value="test.xls">
<input type="button" value="Upload File" name="upload_xls">
</td>
</tr>
</table>
</form>
Run Code Online (Sandbox Code Playgroud)
现在我可以使用Struts上传文件,但它会刷新页面.如果没有页面刷新,我该怎么做?
我通过执行Php函数从我的html页面发送邮件,我的index.html:
<form method="POST" action="sendmail.php" >
<input type="text" name="sender_name" placeholder="Name" required="">
<input type="text" name="sender_email" placeholder="Email" required="">
<input type="text" name="subject" placeholder="Subject" required="">
<textarea placeholder="Message" name="message" required=""></textarea>
<input type="submit" name="send" value="SEND">
</form>
Run Code Online (Sandbox Code Playgroud)
我的sendmail.php:
<?php
if($_POST['send'] == 'SEND'){
$to = 'queries@mydomain.com';
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = "From: ".$_POST['sender_nam??e?']." <".$_POST['sender_em??ail??'].">\r\n"; $headers = "Reply-To: ".$_POST['sender_ema??il??']."\r\n";
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
}
?>
Run Code Online (Sandbox Code Playgroud)
以上工作正常,但它也离开当前页面我想在当前页面执行上述方法,并根据这个问题和这个问题
我必须使用Ajax和jQuery?到目前为止我对他们一无所知我有这个:
////in my index.html
<button …Run Code Online (Sandbox Code Playgroud) javascript ×8
ajax ×4
forms ×4
html ×4
jquery ×4
php ×3
fetch-api ×1
form-data ×1
form-submit ×1
html5 ×1
http ×1
http-headers ×1
json ×1
post ×1
settimeout ×1