2016-12-14 277 views
-1

JavaScript我试图将一些变量传递给后端。我的代码如下。使用POST方法传递参数

我的要求:

我希望送这肯定会来更多的300个字符,不会与一个GET请求符合用户的姓名,电子邮件和说明。因此,我怎样才能发送一个POST请求与这些参数。有人可以帮我吗。

注:我的后台是C#

window.location.href = "/Account/New?fullname=". $data.fullName; 
+0

'“/ Account/New?fullname =”+ $ data.fullName;'用'+'代替'.'来连接。 –

+1

downvote的原因是什么? – Illep

+0

获取请求实际上是“有点”超过300个字符,除非您试图对网络盒子安全。那么你的限制是255.无论如何,取决于选择的图书馆/框架,答案会有所不同。在香草的JavaScript,你可以在这里阅读:[http://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest]。顺便说一句,对于4 + K代表你的问题有点糟糕的研究。 –

回答

-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); 

} 
+0

为什么创建一个窗体,当你可以创建POST请求? –

+0

@VladimirM是的。我只想知道如何创建一个GET请求,而不使用FORMS – Illep

+0

@Illep你的意思是“POST”?无论如何,我在上面评论 –

2

通过使用window.location,您通过URL发送参数 - 这意味着它们由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); 
+0

它给了我一个服务器500错误,并且该视图不会被重定向。 – Illep

+0

确切的错误'加载资源失败:服务器响应状态为500(内部服务器错误)'。 'xmlhttp.send(...)发生错误' – Illep

+1

HTTP错误500意味着您在服务器端有某种错误。这不是客户端中产生的错误。阅读更多关于它[这里](https://www.lifewire.com/500-internal-server-error-explained-2622938)。尝试调试服务器端代码,检查请求中的数据是否到达服务器。 –