从JavaScript
我试图将一些变量传递给后端。我的代码如下。
我的要求:
我希望发送用户的姓名,电子邮件和说明,这些内容肯定会超过300个字符,并且不会符合GET
请求。因此,如何使用这些参数发送POST
请求。有人可以帮助我。
注意:我的后端位于C#
window.location.href = "/Account/New?fullname=". $data.fullName;
答案 0 :(得分:2)
使用window.location
,您将通过网址发送参数 - 这意味着它们是通过GET
方法发送的,而不是POST
发送的。
要使用POST
方法将数据发送到服务器,您必须通过使用method="post"
定义的表单发送数据,或者,如果您不想创建表单元素,AJAX XMLHttpRequest
请求。
我建议,为了学习和简单,从一个简单的表单开始,例如:
<form action="your-page-after-submittion.html" method="post">
<p>Your full name: <input type="text" name="fullname" /><br />
E-mail: <input type="text" name="email" /></p>
<p>Your message:<br />
<textarea name="message" rows="10" cols="40"></textarea></p>
<p><input type="submit" value="Send the from"></p>
</form>
或者,如果您需要AJAX请求,可以使用以下命令:
//prepare your data values to be sent in the request
var fullname = document.getElementById("fullname").value;
var email = document.getElementById("email").value;
var message = document.getElementById("message").value;
//create an XMLHttpRequest
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//submit the request to your desired page (user will not be redirected, as this is AJAX request
xmlhttp.open("POST","your-page-after-submittion.html",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fullname="+fullname+"&email="+email+"&message="+message);
答案 1 :(得分:-1)
您可以通过以下方式创建表单并通过JavaScript提交:
function submitFullName(fullName, destination)
{
var form = document.createElement("form");
var input1 = document.createElement("input");
form.method = "POST";
form.action = destination;
input1.value=fullName;
input1.name="fullname";
form.appendChild(input1);
document.body.appendChild(form);
form.submit();
}
@VladimirM提出了一个很好的观点,您可以使用直接的XMLHttpRequest来执行POST而不是创建表单对象:
function submitFullName(fullName, destination)
{
var xhr = new XMLHttpRequest();
xhr.open("POST", destination, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send("fullname="+fullName);
}