繁体   English   中英

Javascript POSTing HTML表单

[英]Javascript POSTing HTML form

我需要使用单击按钮将一些数据发布到Web服务。 我不想显示从服务器收到的回复,这是一个简单的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>

请告诉我究竟出了什么问题,因为它没有发布任何数据。

你有什么理由使用JavaScript来创建表单吗? 它只是不发布输入或表单无法提交? 您始终可以使用Web Inspect工具查看请求。

尝试打开W​​eb检查器,查看控制台是否存在任何JavaScript错误。

您发布的数据位于http://www.posttestserver.com/data/2015/12/16/21.17.23451563624

plz,看图像。 在此输入图像描述

您可以使用ajax发布数据而不是表单提交。 params = {'input':'on'} $ .ajax(url,post,params,succ,err)

根据我的理解解决方案:

  1. 如果要将脚本放在head标记中,请参阅“ 我应该在哪里放置<script>标记到HTML标记中? ”。 结论是将脚本放在head标记中并使用async或defer属性

  2. 在提交表单之前将表格附加到您的身体。

     document.body.appendChild(form); 
  3. 在body标签前放置脚本。

不知道为什么要使用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'}
    });
});

我的主要目标是

我不想显示从服务器收到的回复

所以我在页面中添加了一个IFRAME,然后将其添加为表单的目标

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

现在服务器的回复不可见

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM