【问题标题】:Send Javascript array when submitting form with Javascript使用 Javascript 提交表单时发送 Javascript 数组
【发布时间】:2015-02-05 19:45:18
【问题描述】:

所以我想使用 Javascript 提交表单,并且我还想发送一个 Javascript 数组。 到目前为止,我有这个不起作用(我没有得到修改后的 URL,我得到了表单的 action 属性中指定的那个):

<script>
    function submit_form() {
        var unique_id_to_delete = [];

        if (confirm('Remove records ID: ' + unique_id_to_delete.toString() + '?')) {

            document.getElementById("submit_form").submit(function(event) {
                event.preventDefault();
                var url = 'submit.php?id_delete='+unique_id_to_delete.toString();
                window.location.href = url;
            });

        } else {
            alert('Ok, next time!');
        }
    }
</script>

表格:

<form id="submit_form" method="post" action="submit.php" enctype="multipart/form-data">

<input type="button" onclick="submit_form();" value="Submit"/>
</form>

【问题讨论】:

  • 定义“不工作”。你期望会发生什么?实际发生了什么? (请确保在描述时查看 JS 错误控制台和开发者工具中的 HTTP 请求内容)。
  • 它不起作用,因为它的格式不正确。您希望查询字符串类似于:?id_delete[]=value1&amp;id_delete[]=value2 PHP 会将其解释为数组。
  • 我修改了问题。希望现在我的问题可以理解了。
  • ninty9notout,问题是即使我在Javascript中将URL指定为banana.php,它仍然会将表单提交到submit.php...看起来像这段代码我指定了自定义URL 永远不会被读取..
  • 在函数结束前粘贴return false;以阻止事件传播,从而停止将表单提交到action属性中指定的URL的默认浏览器行为。

标签: javascript php html forms


【解决方案1】:

使用 javascript 提交表单

        function submit_form()
        {

            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                  //response after success
                  //xmlhttp.responseText
                }
            }
            xmlhttp.open("GET","YOUR URL WITH PARAMS",true);
            xmlhttp.send();


        }

【讨论】:

  • 但是他不会提交表格...?!
  • 创建一个值数组。然后 "var data1 = JSON.stringify(YOURVALUES);"然后提交像这样的值 $.ajax({ type: "POST", data: {value1:data1}, url: "URL", success: function() { // success } });
【解决方案2】:

呵呵..好吧,我试过了,我认为这不是你想的那样..

<script>
    function submit_form() {
        var unique_id_to_delete = [];

        if (confirm('Remove records ID: ' + unique_id_to_delete.toString() + '?')) {

            var data1 = JSON.stringify(unique_id_to_delete);
            $.ajax({ type: "POST", data: {value1:data1}, url: "submit.php", success: function() {  
                 } });

        } else {
            alert('Ok, next time!');
        }
    }
</script>

【讨论】:

    【解决方案3】:

    脚本:

    function submit_form() {
    var unique_id_to_delete = [];
        if (confirm('Remove records ID: ' + unique_id_to_delete.toString() + '?')) {    
                var url = 'submit.php?id_delete='+unique_id_to_delete.toString();
                alert(url);
                window.location.href = url;            
        } else {
            alert('Ok, next time!');
        }
    }
    

    表格:

    <form id="submit_form" method="post" enctype="multipart/form-data">
    <input type="button" onclick="submit_form();" value="Submit"/> 
    </form>
    

    【讨论】:

      【解决方案4】:

      您的表单将永远不会提交,因为您只是重定向窗口位置,从而创建一个 GET 而不是按预期创建一个 POST。 你可以这样做:

      function submit_form() {
        var unique_id_to_delete = [1,2,3,4,5,6];
      
        if (confirm('Remove records ID: ' + unique_id_to_delete.toString() + '?')) {
      
            $.ajax({
                url: "submit.php",
                type: "POST",
                data: unique_id_to_delete,
            });
      
        } else {
          alert('Ok, next time!');
        }
      }
      

      而且不需要表格:

      <input type="button" onclick="submit_form();" value="Submit"/>
      

      我有段时间没用PHP了,但是在另一端你需要使用json_decode

      【讨论】:

        猜你喜欢
        • 2016-09-26
        • 1970-01-01
        • 2012-01-24
        • 1970-01-01
        • 2012-02-02
        • 2016-01-04
        • 2014-01-04
        • 2011-02-20
        • 1970-01-01
        相关资源
        最近更新 更多