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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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创建的表单发送空值_Javascript_Php_Html_Forms - Fatal编程技术网

Javascript创建的表单发送空值

Javascript创建的表单发送空值,javascript,php,html,forms,Javascript,Php,Html,Forms,我正在创建一个HTML表格,我希望它是可编辑的。所以我创建了如下javascript: <script> var buttons = document.getElementsByClassName("clicker"); var buttonclicked = function(e){ if(e.target.textContent == "Edit") { e.target.textCont

我正在创建一个HTML表格,我希望它是可编辑的。所以我创建了如下javascript:

<script>
    var buttons = document.getElementsByClassName("clicker");

    var buttonclicked = function(e){
        if(e.target.textContent == "Edit")
        {         
            e.target.textContent = "Cancel";
            var id = e.target.id;
            var table = document.getElementById("tr"+id);
            var editable_elements = document.querySelectorAll("[contenteditable=false]");
            var sub = document.getElementById("sub"+id);  

            var f = document.createElement("form");
            f.setAttribute('method',"post");
            f.setAttribute('action',"edit.php");
            table.appendChild(f);

            var j = document.createElement("input");
            j.setAttribute("type", "text");
            j.setAttribute("name", "subject");
            j.setAttribute("value", sub.textContent);
            j.setAttribute("placeholder", sub.textContent);
            j.setAttribute("disabled", true);
            j.setAttribute("style", "width: 150px");
            j.textContent = sub.textContent;
            sub.innerHTML = "";
            f.appendChild(j);
            sub.appendChild(j);

            for(var k = (id*6); k < (id*6)+6; k++){
                var l = k;
                var index = k -(k*id) + 1;

                l = document.createElement("input");
                l.setAttribute('type',"number");
                l.setAttribute("style", "width: 75px");
                l.setAttribute("step", "0.01");
                if(index <= 4){
                    l.setAttribute('name',"g"+index);
                    l.setAttribute('placeholder',"G"+index);
                    l.setAttribute("value", editable_elements[k].textContent);
                }
                else if(index == 5){
                    l.setAttribute('name',"creditos");
                    l.setAttribute('placeholder',"credits");
                    l.setAttribute("value", editable_elements[k].textContent);
                }
                else if(index == 6){
                    l.setAttribute('name',"criteria");
                    l.setAttribute('placeholder',"criteria");
                    l.setAttribute("value", editable_elements[k].textContent);
                }
                editable_elements[k].innerHTML = "";
                f.appendChild(l);
                editable_elements[k].appendChild(l);}

            var s = document.createElement("button");
            s.textContent = "Save";
            s.setAttribute('type',"submit");
            s.setAttribute('value',"update");
            s.setAttribute("id", id);
            s.setAttribute("name", "action");
            var clickbutton = document.getElementById("save"+id);
            f.appendChild(s);

        }
        else //save button has been clicked
        {
            //nothing
        }
    };

    for(var j = 0; j < buttons.length; j++)
    {
        buttons[j].addEventListener('click', buttonclicked);
    }
</script>

你真的想在
if($\u POST['action']==“update”])
中做一个数组
[“update”]
,而不是一个字符串
“update”
->
如果($\u POST['action']==“update”)
?这行是怎么回事<代码>$\u POST['action']==[“update”]。你也试过像
var\u dump($\u POST)
edit.php
的第一行,我的意思是发布一个数组。(表中这些框内的所有值)。我之所以把这一行放在那里,是因为我有另一个表单,可以在其中编辑或删除表中的内容。因此,我用一个name操作和一个value update设置edit按钮,用一个name操作和一个value delete设置delete按钮,所以在检查server request method==post之后,我检查按下了哪个按钮。如果您查看我的脚本,您将看到我创建了一个带有名称操作和值更新的按钮。var_dump($\u POST)向我显示,正在传递的数组只是一个按钮:
array(size=1)'action'=>string'update'(length=6)
,这是wierd,因为如果我使用另一个表单提交到同一页面,我会得到这个:
array(大小=8)'subject'=>字符串'foo'(长度=3)'g1'=>字符串'1'(长度=1)'g2'=>字符串'2'(长度=1)'g3'=>字符串'3'(长度=1)'g4'=>字符串'4'(长度=1)'creditos'=>字符串'4'(长度=1)标准'=>字符串'4'(长度=1)'action'=>字符串'update'(长度=6)
我理解为什么,这是因为这几行代码:`
sub.appendChild(j);
editable_元素[k]。appendChild(l)
添加到表单后,我将从表单中删除输入。问题是,如果我删除这些行,我无法选择输入的位置,它们将保持这样:除了表行,而不是在表行中
else if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    if($_POST['action'] == ["update"])
    {
        //validate submission
        if(empty($_POST["subject"]))
            apologize("You must provide what subject to change");
        ...
    }
...
}