Мне нужно опубликовать некоторые данные в веб-сервис с помощью одного нажатия кнопки. Я не хочу показывать ответ, полученный от сервера, что делает простая форма HTML. Итак, я придумал следующий код:

<!DOCTYPE html>

<html>
<head>
<script>
function sendData() {

    var form = document.createElement('form');
    form.action = "https://posttestserver.com/post.php";
    form.method = 'POST';


    var input = document.createElement('input');
    input.type = 'hidden';
    input.name = "args";
    input.value = "on";
    form.appendChild(input);

    form.submit();
    alert("Submited!");
}


</script>
</head>
<body>

<button onclick="sendData();">Click Me!</button>

</body>
</html>

Пожалуйста, просветите меня, что именно идет не так, потому что не публиковать никаких данных.

3
Dushyant Bangal 17 Дек 2015 в 07:55

5 ответов

Лучший ответ

Моей главной целью было

Я не хочу показывать ответ, полученный от сервера

Поэтому я добавил IFRAME на странице, а затем добавил его в качестве цели формы

<form action="MYLINK" method="POST" target="hidden-form">
...
</form>
<IFRAME style="display:none" name="hidden-form"></IFRAME>

Теперь ответ с сервера не виден

0
Dushyant Bangal 21 Дек 2015 в 11:51

Ваши опубликованные данные найдены на http://www.posttestserver.com/data/2015/12/ 16 / 21.17.23451563624

Пожалуйста, смотрите изображение. введите описание изображения здесь

0
Ataur Rahman Munna 17 Дек 2015 в 05:21

По какой причине вы должны использовать JavaScript для создания формы? Это просто не публикует ввод или не удается отправить форму? Вы всегда можете использовать инструмент Web Inspect для просмотра запроса.

Попробуйте открыть свой веб-инспектор и посмотрите на консоль на наличие ошибок JavaScript.

0
dranieri 17 Дек 2015 в 05:05

Вы можете использовать ajax для публикации данных вместо отправки формы. params = {'input': 'on'} $ .ajax (url, post, params, succ, err)

0
Jiayu Wang 17 Дек 2015 в 06:06

Не уверен, почему вы хотите создать форму с использованием JS, просто чтобы отправить некоторые данные на сервер, когда вы могли бы использовать ajax. Как уже упоминалось в предыдущих ответах, вы можете использовать jQuery. Если вы не хотите использовать jQuery, вы могли бы использовать объект XML HTTP Request (XHR)

Простое решение с использованием jQuery было бы

$.ajax({
    type: 'POST',
    url: 'https://posttestserver.com/post.php',
    data: {'args': 'on'}
});

Поскольку вы хотите, чтобы данные отправлялись при нажатии кнопки, вы можете вызвать событие при нажатии кнопки

$('button').on('click', function() {
    $.ajax({
        type: 'POST',
        url: 'https://posttestserver.com/post.php',
        data: {'args': 'on'}
    });
});
0
aliasm2k 17 Дек 2015 в 07:42