如何将html表数据传递给数组?

时间:2017-12-22 16:29:24

标签: javascript php html ajax codeigniter

我正在使用PHP Codeigniter。我对JavaScript没有很好的了解。我的问题是我有一个包含可编辑列的表,当我单击提交按钮时,我想使用POST方法将表数据发送到Codeigniter函数。

HTML代码

Async

JavaScript for editable table

<div class="col-md-12 top-20 padding-0">
    <div class="col-md-12">
        <div class="panel">
            <div class="panel-heading"><h3>Data Tables</h3></div>
            <div class="panel-body">
                <div class="responsive-table">
                    <table id="data_table" class="table table-striped table-bordered" width="100%" cellspacing="0">
                        <tr>
                            <th>Name</th>
                            <th>Country</th>
                            <th>Age</th>
                            <th>Action</th>
                        </tr>
                        <tr>
                            <td><input type="text" id="new_name"></td>
                            <td><input type="text" id="new_country"></td>
                            <td><input type="text" id="new_age"></td>
                            <td><input type="button" class="add" onclick="add_row();" value="Add Row"></td>
                        </tr>

                    </table>
                    <input type="button" name="check" onclick="clik();">
                </div>
            </div>
        </div>
    </div>
</div>

因此,在给定的可编辑表数据中,我想推送到我的codeigniter函数。

3 个答案:

答案 0 :(得分:0)

现在最好的方法是使用Ajax将这些javascript值发布到Codeigniter函数

简单的ajax调用示例:

var newName ='John Smith';

$.ajax('myservice/codigniter_Function?' + $.param({id: 'some-unique-id'}), {
    method: 'POST',
    data: {
        name: newName
    }
})
.then(
    function success(name) {
        if (name !== newName) {
            alert('Something went wrong.  Name is now ' + name);
        }
    },

    function fail(data, status) {
        alert('Request failed.  Returned status of ' + status);
    }
);

请查看source以获取有关如何使用javascript详细使用ajax的更多信息。

答案 1 :(得分:0)

由于您的问题包含vanilla Javascript,我的回答将使用XMLHttpRequest()。我创建了以下函数来将后期数据发送到后端。

function ajax_req(url, params) {
    var http = new XMLHttpRequest();
    http.open("POST", url, true);

    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    http.onreadystatechange = function () {
        if (http.readyState == 4 && http.status == 200) {
            alert(http.responseText);
        }
    }
    http.send(params);
}

save_row()功能中,创建要发送到后端的参数,例如name=billy&age=21&country=us

function save_row(no) {
    var name_val = document.getElementById("name_text" + no).value;
    var country_val = document.getElementById("country_text" + no).value;
    var age_val = document.getElementById("age_text" + no).value;

    document.getElementById("name_row" + no).innerHTML = name_val;
    document.getElementById("country_row" + no).innerHTML = country_val;
    document.getElementById("age_row" + no).innerHTML = age_val;

    document.getElementById("edit_button" + no).style.display = "block";
    document.getElementById("save_button" + no).style.display = "none";

    // send values to back end 
    var params = "name=" + name_val + "&country=" + country_val + "&age=" + age_val;
    ajax_req('/savedata', params);
}

答案 2 :(得分:0)

<form action="<php echo base_url('controller_name/ method_name')?> method="POST">

<div class="col-md-12 top-20 padding-0">

<div class="col-md-12">
    <div class="panel">
        <div class="panel-heading"><h3>Data Tables</h3></div>
        <div class="panel-body">
            <div class="responsive-table">
                <table id="data_table" class="table table-striped table-bordered" width="100%" cellspacing="0">
                    <tr>
                        <th>Name</th>
                        <th>Country</th>
                        <th>Age</th>
                        <th>Action</th>
                    </tr>
                    <tr>
                        <td><input type="text" id="new_name" name="newname"></td>
                        <td><input type="text" id="new_country" name="country"></td>
                        <td><input type="text" id="new_age" name="age"></td>
                    </tr>

                </table>
                <input type="submit" name="check" class="btn btn-primary">
            </div>
        </div>
    </div>
</div>

在您的控制器中

public function function_name()

{

$ post = $ this&gt; input-&gt; post();

$data = array(
'name' =>$post['newname'],
'country' =>$post['country'],
'age' =>$post['age'],
);


$this->load->model('model_name');
$this->model_name->function_name($data);

}

在你的模特中

public function function_name($ data) {

return $this->db->insert('table_name', $data);

}