简体   繁体   中英

How To Sending ajax post request to Controller?

how do I send or forward data from ajax post to the controller? I already got id_user data from ajax for edit function to controller, but can't forward or send it to the controller, so the "href" or redirect page action doesn't work, how do I send the ajax post data to the controller? sorry if there is something missing, if it's unclear you can ask me, I beg for your help ..

Note I use: php native mvc

this is my code from view user_management.php

<?php
$main_controll = new App_UserManagement_Control_UserManagement();
$data_from_ctr = $main_controll->usermanagement();
?>

<script type="text/javascript">
$(document).ready(function(){
    $('.delete').click(function(event){
        event.preventDefault();
        if(confirm("Are you sure want to delete ?")){
            var username = $(this).attr("username");
            var url = $(this).attr("href");
            $.ajax({
                type:'post',
                url: url,
                data:{username:username},
                success: function(data){
                    alert("Data Berhasil dihapus")
                    location.href = '<?php echo BASE_URL. "app.php/usermanagement/user_management "?>';

                },
                error:function(err){
                    alert("Data Gagal Dihapus")
                }
            });
        }
    });

    $('.edit').click(function(event){
        event.preventDefault();

        var id_user =$(this).attr("id_user");
        var url =$(this).attr("href");

        console.log(id_user);
        $.ajax({
            type:'post',
            url: url,
            data:{id_user:id_user},
            success: function(data){
                alert(data)
                //window.location.href = '<?php //echo BASE_URL. "app.php/usermanagement/edit_user "?>';
                location.href = '<?php echo BASE_URL. "app.php/usermanagement/edit_user "?>';
            },
            error:function(err){
                alert(err)
            }
        });
    });
 });

</script>

   <fieldset>
     <legend> User Management </legend>  

    <br />

 <span style="font-size: 15px;">
           <a style="text-decoration: underline" href="<?php echo BASE_URL. "app.php/usermanagement/add_user"?>">Add User</a>
 </span>
 <br /><br />
<table cellspacing="2" cellpadding="2" border="0" align="left" id="tablecontent">                      
    <thead style="background-color:#eee;">
        <th width="25">#</th>
        <!--<th width="25">id</th>-->
        <th width="80">Username</th>
        <th width="117">Name</th>
        <th width="117">Company Code</th>
        <th width="117">Company Name</th>
        <th width="80">User Access</th>
        <th width="80">Login Status</th>
        <th width="80">User Status</th>
        <th width="200">Action</th>

    </thead>
    <tbody>
        <?php if($data_from_ctr['user'] !== NULL): ?>
        <?php $i = 1; foreach ($data_from_ctr['user'] as $row):
         ?>
        <!--?php 
        $No=0;
        foreach($data_from_ctr['user'] as $row) {

            $No++;
        ?>-->

        <tr>
        <td><?php echo $i++; ?></td>
        <!--<td><?php //echo $row ['idx'] ?></td>-->
        <td><?php echo $row ['_user'] ?></td>
        <td><?php echo $row ['_fullName'] ?></td>
        <td><?php echo $row ['_pyrCode'] ?></td>
        <td><?php echo $row ['_desc'] ?></td>
        <td><?php echo $row ['group_user'] ?></td>
        <!--<td><?php //echo $row ['_flag'] ?></td>-->
        <td>
        <?php
        $status = $row['_flag'];
        if($status == 0){
            echo "Offline";
        }elseif ($status == "") {
            echo "Online";
        }else{
            echo "Online";
        }
        ?>
        </td>
        <td>
        <?php
        $active = $row ['active'];
        if($active == 1){
            echo "Active";
        }else{
            echo "Non Active";
        }       

        ?>
        </td>
        <td>
            <a class="edit" href="<?php echo BASE_URL. "app.php/usermanagement/edit_user "?>" id_user="<?php echo $row ['idx'] ?>">Edit</a>
            &nbsp;
            <a class="delete" href="<?php echo BASE_URL. "app.php/usermanagement/delete "?>" username="<?php echo $row ['_user'] ?>">Delete</a>
            &nbsp;
            <a onclick="///return confirm('Are you sure want reset {{ row._fullName }} password ?')" href="#">Reset Password</a>
            </td>       
        </tr>
          <?php endforeach; ?>
          <?php endif; ?>
    </tbody>
</table>
</fieldset>  

This is my View edit_user.php

<?php
$main_controll = new App_UserManagement_Control_UserManagement();
$data_from_ctr = $main_controll->edit();
?>

<?php include_once APP_TEMPLATE_DIR . 'header_content.php'?>

<script type="text/javascript">
$(document).ready(function(){
    $('#level').change(function(){
        var val =$(this).val();
        if(val == '03' || val == '04'){
            $('.limit').show();
        }else{
            $('.limit').hide();
        }
    });


    $('#access').change(function(){
        var val = $(this).val();
        if(val == 'user'){
            $('.level').show();
        }else{
            $('.level').hide();
            $('.limit').hide();
        }
    });

 $('#acctAccessed').chosen();

    $("#chkall").click(function(){
        if($("#chkall").is(':checked')){
            $(".chosen-select option").prop('selected', true);
        }else{
            $(".chosen-select option").prop('selected', false);
        }
        $(".chosen-select").trigger("chosen:updated");
    });
    $(".chosen-select").chosen();
});

</script>

<form method="POST">
<fieldset>
    <legend> Edit User Management </legend>
    <table border="0" width="700" id="usermanagement">
    <tbody>
        <tr>
            <td width="160"><strong>Company</strong></td>
            <td width="10">:</td>
            <td width="193" colspan="2" class="company"><span class ="id_company"><?php echo Session::get('pyrCode'); ?></span> <?php echo $data_from_ctr['account']['desc']['desc'];?></td>
        </tr>
        <tr class="odd">
            <td width="150"><strong>Username</strong></td>
            <td width="10">:</td>
            <td colspan="2">
            <input type="text" name="username" id="username" value="<?php echo $data_from_ctr['user']['_user']; ?>" /></td>
        </tr>
        <tr>
            <td width="150"><strong>Email</strong></td>
            <td width="10">:</td>
            <td colspan="2">
                <input type="text" name="email" id="email" value="<?php echo $data_from_ctr['user']['email']; ?>" />
            </td>
        </tr>
        <tr class="odd">
            <td width="150"><strong>Status User</strong></td>
            <td width="10">:</td>
            <td colspan="2">
           <input type="radio" name="status_active" value="<?php echo $data_from_ctr['user']['active']; ?>"  checked="" id="aktif"/>
                    &nbsp;Active
            <input type="radio" name="status_active" value="<?php echo $data_from_ctr['user']['active'];?>" id="nonaktif" />
                    &nbsp;Non Active
            </td>
            </tr>
        <tr>
            <td width="150"><strong>Name</strong></td>
            <td width="10">:</td>
            <td colspan="2">
                <input type="text" name="name" id="name" value="<?php echo $data_from_ctr['user']['_fullName']; ?>" />
            </td>
        </tr>
        <tr class="odd">
            <td width="150"><strong>Phone Number</strong></td>
            <td width="10">:</td>
            <td colspan="2">
                <input type="text" name="phone" id="phone" value="<?php echo $data_from_ctr['user']['_noHP']; ?>" />
            </td>
        </tr>
        <tr>
            <td width="150"><strong>Access Control</strong></td>
            <td width="10">:</td>
            <td colspan="2">
            <select id="access" name="access">
                <option value="user">User</option>
                <option value="admin_bank">Admin Bank</option>
                <option value="admin_client">Admin Client</option>
            </select>

            </td>
        </tr>
        <tr class="odd level">
            <td width="150"><strong>Level</strong></td>
            <td width="10">:</td>
            <td colspan="2">
            <select id="level" name="level">
                <option value="01">Inputer</option>
                <option value="02">Verificator</option>
                <option value="03">Authorize 1</option>
                <option value="04">Authorize 2</option>
                <option value="05">COPS</option>
            </select>
            </td>
        </tr>
                <tr style="display: none" class="odd limit">
                <td width="150"><strong>Limit Transaction</strong></td>
                <td width="10">:</td>
                <td colspan="2">
                    <input type="text" name="limit" value="<?php echo $data_from_ctr['user']['limit']; ?>" />
                </td>
            </tr>
        <tr>
            <td width="150"><strong>Account Access</strong></td>
            <td width="10">:</td>
            <td colspan="2">
            <select id="acctAccessed" name="acctAccessed[]" multiple="multiple" class="chosen-select" style="width:350px;" data-placeholder="Select account">
            <?php foreach ($data_from_ctr['account']['account'] as $data) :?>    
            <option value="<?php echo $data['id'] ?>"><?php echo $data['_giro_OB']; ?></option>
            <?php endforeach; ?>
            </select>
            <input id="chkall" type="checkbox" >Select All</input>
        </td>
            </tr>
        <tr class="odd">
            <td width="150">&nbsp;</td>
            <td width="10">&nbsp;</td>
            <td colspan="2"><input class="btnsubmitdis" type="submit"  value="Save" /></td>
        </tr>


    </tbody>
    </table>
</fieldset>

<?php include_once APP_TEMPLATE_DIR . 'footer_content.php'; ?>

This is my controller usermanagement.php

    public function edit(){

            Template::setTitle('Edit User Management');

            $id_user = (int)Request::post('id_user');

            //echo json_encode($iduser);

            //$iduser = (int)Session::get('idx');

            $result = $this->getUserbyId($id_user);      

            $dataresult = json_decode($result, true);
            if($dataresult === NULL) {
                echo "<script language = \"javascript\">window.alert(\"\Tidak Ada Data\");";
                echo "javascript:history.back();</script>";
                return false;
            }
            $data = $dataresult;
            return $data;

if(Request::isPost()){

            $username = Request::post('username');
            $name = Request::post('name');
            $level =Request::post('level');
            $access =Request::post('access');
            $phone = $this->formatPhone($post['phone']);
            $limit = Request::post('limit');
            $email = Request::post('email');
            $status_active = Request::post('status_active');
            $existing_username = Request::post('existing_username');

            //validasi jika username dan comp-code sudah ada

            if(!array_key_exists('acctAccessed')){
                $data_post_rek_acc = array();
            }else{
                $account_access = Request::post('acctAccessed');
                $data_post_rek_acc = array();
                foreach ($account_access as $act) {
                $data_post_rek = array('idRek' => $act,
                    'userName'=> $username);
                $data_post_rek_acc[] = $data_post_rek;
                }

            }

            /*$data_update= array(''

            );*/


            $id_user = (int)Request::post('id_user');

            $url= "http://localhost:8585/update-usermanagement/$id_user";

            $curl = curl_init($url);

            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($curl, CURLOPT_FAILONERROR, true);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_HTTPHEADER, array(
                        'Content-Type: application/json',
                        'Content-Length: '.strlen($payload)
                    ));
            $result = curl_exec($ch);
            return $result;

        }else{
        $user_comp_code = Session::get('pyrCode');
        /*API URL */
        $url = "http://localhost:8585/add-account/$user_comp_code";

        /*init cURL resource */
        $curl = curl_init($url);

        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPGET, 1);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec ($curl);

        if ($result === FALSE){

            die('Curl failed: ' . curl_error($curl));
        }
        curl_close($curl);

        //echo $url;echo $result;  die;

        $dataresult = json_decode($result, true);
        $data['account'] = $dataresult;
        return $data;
        }

    }

    public function getUserbyId($id_user){

        //$id_user = Request::post('id_user');

        echo json_encode($id_user);

        if(!empty($id_user)){

            $url="http://localhost:8585/get-user/$id_user";

            $curl = curl_init($url);

            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HTTPGET, 1);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            $result =  curl_exec($curl);


            if($result === FALSE){

                die('Curl failed: ' .curl_error($curl));
            }
            curl_close($curl);
            return $result;
        }
    }

        if(Request::isPost()){

            $username = Request::post('username');
            $name = Request::post('name');
            $level =Request::post('level');
            $access =Request::post('access');
            $phone = $this->formatPhone($post['phone']);
            $limit = Request::post('limit');
            $email = Request::post('email');
            $status_active = Request::post('status_active');
            $existing_username = Request::post('existing_username');

            //validasi jika username dan comp-code sudah ada

            if(!array_key_exists('acctAccessed')){
                $data_post_rek_acc = array();
            }else{
                $account_access = Request::post('acctAccessed');
                $data_post_rek_acc = array();
                foreach ($account_access as $act) {
                $data_post_rek = array('idRek' => $act,
                    'userName'=> $username);
                $data_post_rek_acc[] = $data_post_rek;
                }

            }

            /*$data_update= array(''

            );*/


            $id_user = (int)Request::post('id_user');

            $url= "http://localhost:8585/update-usermanagement/$id_user";

            $curl = curl_init($url);

            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($curl, CURLOPT_FAILONERROR, true);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_HTTPHEADER, array(
                        'Content-Type: application/json',
                        'Content-Length: '.strlen($payload)
                    ));
            $result = curl_exec($ch);
            return $result;

        }else{
        $user_comp_code = Session::get('pyrCode');
        /*API URL */
        $url = "http://localhost:8585/add-account/$user_comp_code";

        /*init cURL resource */
        $curl = curl_init($url);

        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPGET, 1);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec ($curl);

        if ($result === FALSE){

            die('Curl failed: ' . curl_error($curl));
        }
        curl_close($curl);

        //echo $url;echo $result;  die;

        $dataresult = json_decode($result, true);
        $data['account'] = $dataresult;
        return $data;
        }

    }

    public function getUserbyId($id_user){

        //$id_user = Request::post('id_user');

        echo json_encode($id_user);

        if(!empty($id_user)){

            $url="http://localhost:8585/get-user/$id_user";

            $curl = curl_init($url);

            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HTTPGET, 1);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            $result =  curl_exec($curl);


            if($result === FALSE){

                die('Curl failed: ' .curl_error($curl));
            }
            curl_close($curl);
            return $result;
        }
    }

this is edit.php

<?php
$ctr = new App_UserManagement_Control_UserManagement();
$ctr ->edit();
?>

This is my problem

I have get data id_user from ajax enter image description here

but I can't passing data value id_user to controller and can't redirect page edit_user.php enter image description here

I want to like this if I can passing data value from ajax to controller and can redirect page edit_user.php

enter image description here

This is New problem my data show to alert(data) from ajax, no real page edit_user.php to example: I want to edit username derry_save enter image description here

new error: this is my data id_user, i catch use alert in var id_user在此处输入图片说明

this is result from alert(data) jquery在此处输入图片说明

Unfortunately (in your case), ajax is asynchronous, meaning that your click function starts the ajax call and then continues running without paying any attention to what it does (and thus returns nothing at the end).

The success function is called later (when the ajax returns successfully) and is a completely different function, so its returning true has no bearing on your original click function.

All this to say, you will need to use javascript to override the anchor tag's natural behavior (go directly to google.com) and what happens afterward (redirect).

Please see if this can help

$('.delete').click(function(event){
    event.preventDefault();
    $link  = $(this); 
    if(confirm("Are you sure want to delete ?")){
        var username = $(this).attr("username");
       alert(username);
        var url = $(this).attr("href");
        $.ajax({
            type:'post',
            url: url,
            data:{username:username},
            success: function(data){
                alert("Data Berhasil dihapus")

               window.location.href = $link.attr('href');

            },
            error:function(err){
                alert("Data Gagal Dihapus")
            }
        });
    }
});

On edit.php you can do like this

$post_data = $_POST;
$ctr = new App_UserManagement_Control_UserManagement();
$ctr->edit($post_data);

and then on the controller in the edit function you can get these values

public function edit($post_data){
    echo '<pre>';
    print_r($post_data);die;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM