2016-12-14 6 views
-1

От JavaScript Я пытаюсь передать некоторые переменные на сервер. Мой код выглядит следующим образом.Передача параметров с использованием метода POST

Мое требование:

Я надеюсь отправить имя, электронная почта и описание пользователя, который, безусловно, приходят более, что 300 символов и не будет соответствовать с GET запроса. Поэтому, как я могу отправить запрос POST с этими параметрами. Кто-нибудь может мне помочь.

Примечание: Мой Бэкэнд в C#

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

''/Account/New? Fullname = "+ $ data.fullName;' использовать '+' вместо '.' для conciate. –

+1

Причина для нисходящего потока? – 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 (Internal Server Error)'. Ошибка возникает в 'xmlhttp.send (...)' – Illep

+1

Ошибка HTTP 500 означает, что у вас есть какая-то ошибка на стороне сервера. Это не ошибка, сгенерированная в клиенте. Подробнее об этом читайте здесь (https://www.lifewire.com/500-internal-server-error-explained-2622938). Попробуйте отладить код на стороне сервера, проверьте, что данные из запроса поступают на сервер. –

Смежные вопросы