Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提交HTML表单而不打开新窗口_Javascript_Html_Forms - Fatal编程技术网

Javascript 提交HTML表单而不打开新窗口

Javascript 提交HTML表单而不打开新窗口,javascript,html,forms,Javascript,Html,Forms,所以我知道当你把一个URL放到一个HTML表单中时,它会把用户发送到那个URL。我还添加了target属性target=\u blank,以便在新窗口中打开新URL。但是我想关闭那个窗口,呆在提交表单的原始站点上。我试图命名目标窗口并关闭它,但没有成功。我想知道是否有一个简单的方法来做到这一点 <form name="leds" id="ledSend" method="get" target="newWindow" action="https://agent.electricimp.co

所以我知道当你把一个URL放到一个HTML表单中时,它会把用户发送到那个URL。我还添加了target属性target=\u blank,以便在新窗口中打开新URL。但是我想关闭那个窗口,呆在提交表单的原始站点上。我试图命名目标窗口并关闭它,但没有成功。我想知道是否有一个简单的方法来做到这一点

<form name="leds" id="ledSend" method="get" target="newWindow" action="https://agent.electricimp.com/NkzPvVKeHshT">
Lamp Control: <input type="radio" name="led" value="0" checked>Off
              <input type="radio" name="led" value="1">On<br>
How long should the Lights stay on? <input type="text" name="timer" value="10">seconds<br>
Your name? For Our Records <input id="name" type="text" name="user" placeholder="Your name here"><br>
<input type="submit" value="Update!" onclick="alert(theInput.value +', You are about to change the Light! Keep in mind that there will be about a 2 second delay on the LiveStream.')"/>
<script>
var theInput = document.getElementById("name");
</script>
</form>

<script>
newWindow.close();
</script>

以下是您需要的,只需根据您的需要进行调整,创建一个php文件,在操作中调用该文件,并让它执行与表单相同的操作-完全相同的方式,但保持在同一页面上:

$("#ajaxform").submit(function(e)
    {
        var postData = $(this).serializeArray();
        var formURL = $(this).attr("action");
        $.ajax(
        {
            url : formURL,
            type: "POST",
            data : postData,
            success:function(data) 
            {
                //data: return data from server
            }

        });
        e.preventDefault(); //STOP default action
        e.unbind(); //unbind. to stop multiple form submit.
    });

    $("#ajaxform").submit();
您需要将jQuery包含到文件中才能使用它


当您在表单中使用GET时—通过此提交,您将在$\u帖子中获得数据。

baao建议的AJAX请求是可行的,但它有一个警告。如果目标服务器位于不同的域上,浏览器将不允许传递AJAX请求。为了解决这个问题,它应该提供正确的答案


如果目标服务器超出了您的控制范围,您可以在自己的服务器上创建一个代理并调用它,而不是当前的第三方服务器。这将允许您通过在与表单页面相同的地址创建代理来进一步简化事情。

除了ajax之外,另一个解决方案是使用内部隐藏的iframe作为表单元素的目标属性。这样,窗体将在隐藏的内部元素中打开。 e、 g:


有一种很棒的东西叫做AJAX。用Ajax做你想要的东西?简单的解决方案是在所有位置都不具有target属性如果您希望以这种方式处理它,那么更安全的做法是在后端完成它的操作之后从操作窗口调用close调用。。。。使用php或其他方法回显最后3行。实际上,对于这样的事情,你应该使用AJAX。@Mr.Alien目标似乎是实际表单所在的页面不应该重新加载或更改位置。@Juhana我想他不想在新的选项卡/窗口上打开它,无论如何,问题对我来说是不清楚的……好的,我现在正试图弄清楚AJAX表单提交。。。是否有其他php文件。或者这会提交表单数据字符串:这会将字段值提交到下一个文件。但是我越是关注你的表单,我就越想让用户更改DOM背景颜色,对吗?
<form id="eFrm" target="ifrm1">
</form>
<iframe id="ifrm1" name="ifrm1" style="display:none"></iframe>