Codeigniter $ this-> input-> post () пуст для отправки ввода - PullRequest
0 голосов
/ 02 апреля 2020
<form method="post" id="user_form">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Add User</h4>
            </div>
            <div class="modal-body">
                <label>Enter First Name</label>
                <input type="text" name="first_name" id="first_name" class="form-control" />
                <br />
                <label>Enter Last Name</label>
                <input type="text" name="last_name" id="last_name" class="form-control" />
                <br />
                <label>Select User Image</label>
                <input type="file" name="user_image" id="user_image" />
                <span id="user_uploaded_image"></span>
            </div>
            <div class="modal-footer">
                <input type="hidden" name="user_id" id="user_id" />
                <input type="submit" name="action" id="action" class="btn btn-success" value="Add" />
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </form>

и скрипт в этом представлении:

$.ajax({
                    url:"<?php echo base_url() . 'raportowanie/user_action'?>",
                    method:'POST',
                    data:new FormData(this),
                    contentType:false,
                    processData:false,
                    success:function(data)
                    {
                        alert(data);
                        $('#user_form')[0].reset();
                        $('#userModal').modal('hide');
                        dataTable.ajax.reload();
                    }
                });

в контроллере

    function user_action(){

    echo 'Action is: '.$this->input->post('action');
}

Проблема в том, что $ this-> input-> post ('action') don не вернуть значение ввода. Если я изменяю тип ввода для текста, это $ this-> input-> post ('action') в порядке и возвращаемое значение = Add. Почему это не работает с input type = "submit"? Как я могу получить ценность моего вклада. Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 02 апреля 2020

Используйте скрытое поле для передачи значения, а не кнопку отправки

Вы можете создать значение поля и изменить значение на основе последней кнопки, которую вы щелкнули

<form>
    <input type = "hidden" id = "btn_type" name = "btn_type">
    <button type="submit" class="btn btn-primary" id = "btn_add">Add</button>
    <button type="submit" class="btn btn-primary" id = "btn_edit">Edit</button>
</form>

Изменить скрытое значение значение при нажатии кнопки

$(document).on("click", "#btn_add", function(event){
    $('#btn_type').val('Add');
});

$(document).on("click", "#btn_edit", function(event){
    $('#btn_type').val('Edit');
});

и получить значение в вашем контроллере

$buttonvalue = $this->input->post('btn_type',true);
1 голос
/ 02 апреля 2020

Тип ввода отправки предназначен только для кнопки отправки, которая передает все значения формы и обычно не используется для отправки самих данных. Атрибут value используется в качестве метки кнопки.

Если вы хотите узнать, был ли запрос на публикацию вашего контроллера, вы можете использовать что-то вроде этого:

function user_action()
{
    if ($this->input->server('REQUEST_METHOD') == 'POST')
    {
        // Your other inputs here
        echo 'First Name is: '.$this->input->post('first_name');
        echo 'Last Name is: '.$this->input->post('last_name');
        echo 'User Image is: '.$this->input->post('user_image');
        echo 'User ID is: '.$this->input->post('user_id');
    }
}

Или, если используете Codeigniter v4 вы также можете использовать $this->request->isAJAX(). Я не уверен, было ли это доступно в версии 3 или нет.

ОБНОВЛЕНИЕ

Если вы хотите проверить, можно ли добавить / изменить его, я бы предложил добавить скрытый ввод и измените это значение, как показано ниже:

<input type="hidden" name="method" value="add">

Затем вы можете проверить его в контроллере:

if ($this->input->post('method') == 'add')
{
    // Adding a record
} else {
    // Editing a record
}
0 голосов
/ 02 апреля 2020

Большое спасибо за помощь. Теперь я имею в виду:

 <input type="hidden" name="user_id" id="user_id" />
 <input type="hidden" name="method" id="method" value="Add">
 <input type="submit" name="action" id="action" class="btn btn-success" value="Add" />
 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

и я устанавливаю значение add или edit в JS script

        $('#action').val("Add"); \\ or Edit
        $('#method').val("Add"); \\ or Edit

В контроллере

$this->input->post('method')

Это работает прекрасно. Спасибо !!!

...