Codeigniter и публикация угловых данных

#php #angularjs #codeigniter

#php #angularjs #codeigniter

Вопрос:

[РЕДАКТИРОВАТЬ]просто поместите данные post в переменную и удалите $scope .

 $scope.deleteData = function(email) { 
if(confirm("Are you sure you want to delete this record?")){
 var email1= email; $http.post('<?php echo site_url("index.php/user/delete_user");?>', {'email':email1}).error(function(){ console.log("error"); });
 }
 }
  

всякий раз, когда я нажимаю кнопку удаления, ничего не происходит.
пожалуйста, проверьте код и, пожалуйста, ответьте с решением. сетевая полезная нагрузка ничего не передает {}.
view/user_view.php

 <!DOCTYPE html >
<html lang="en" ng-app="userApp">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> 
<script type="text/javascript" src="<?php echo base_url('assets/jquery/jquery-3.1.1.min.js'); ?>"></script>
<script type="text/javascript" src="<?php echo base_url('assets/bootstrap/js/bootstrap.min.js'); ?>"></script>
<link href="<?php echo base_url('assets/bootstrap/css/bootstrap.min.css'); ?>">
<script type="text/javascript">
 /*function userController($scope,$http) {
     $scope.users = [];
     $http.get('<?php echo site_url('index.php/user/user_list'); ?>').success(function($data){ $scope.users=$data; });
 }*/

 var app = angular.module('userApp', []);
app.controller('userController', function($scope, $http) {

	//$scope.buttonName = "Add";

	$scope.deleteData = function() {
		/*$http.post("<?php echo base_url(); ?>index.php/User/delete_user/",{'id':$scope.id})
		.success(function(data,status,headers,config){
           $scope.message = "Deleted Successfully!";
			
		});
		*/

		$http.post('<?php echo site_url('index.php/user/delete_user');?>',
			{'email':$scope.email}).error(function(){
				console.log("error");
			})
	}
	$scope.displayUsers = function() {
		     $scope.users = [];
		     $http.get('<?php echo site_url("index.php/user/user_list"); ?>').success(function($data){ $scope.users=$data; });
		}

	$scope.insertData = function(){
				$http.post('<?php echo site_url('index.php/user/insert_user');?>',
					{
						'name':$scope.name,
						'gender':$scope.gender, 
						'email':$scope.email, 
						'address':$scope.address, 
						'phone':$scope.phone
					}).error(function() {
				console.log("Error");
				});
			}

		
});
</script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>
<body ng-controller="userController">
<!-- ng-app : which tells the Angular framework to parse data from this div -->
<div class="container" ng-init="displayUsers()">
<button class="btn" data-toggle="modal" data-target="#myModal">Add Users</button>
	<div class="row">
	  <div class="col-lg-12 col-md-12">
	  <input type="search" class="form-control" ng-model="searchUser" placeholder="Live Search">
	    <table class="table table-bordered table-condensed table-responsive" ng-controller="userController"> 
	      <thead>
	        <tr>
	          <td>Select</td>
	          <td>Name</td>
	          <td>Gender</td>
	          <td>Email</td>
	          <td>Address</td>
	          <td>Phone Number</td>
	          <td>Action</td>
	        </tr>
	      </thead>
	      <tbody>
	        <tr ng-repeat="user in users | filter:searchUser">
	          <td><input type="checkbox"></td>
	          <td class="hidden">{{user.id}}</td>
	          <td>{{user.name}}</td>
	          <td>{{user.gender}}</td>
	          <td>{{user.email}}</td>
	          <td>{{user.address}}</td>
	          <td>{{user.phone}}</td>
	          <td>
	          <button class="btn btn-primary">Edit</button> 
	          <button class="btn"  name="btnDelete" ng-click="deleteData(user.email)" value="delete">Delete</button></td>
	        </tr>
	      </tbody>
	    </table>
	  </div>
  </div>

  <!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">amp;times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
     	 <div class="col-md-12">
		   	<form class="form form-horizontal">

		   		<div class="form-group hidden">
		       		<label for="name">id</label>
		       		<input type="hidden" class="form-control" ng-model="id" id="name">
		       	</div>
		       	<div class="form-group">
		       		<label for="name">Name</label>
		       		<input type="text" class="form-control" ng-model="name" id="name">
		       	</div>

		       	<div class="form-group">
		       		<label for="gender">Gender</label>
		       		<input type="radio" id="gender" ng-model="gender" value="male">Male
		       		<input type="radio" id="gender" ng-model="gender" value="female">Female
		       	</div>

		       	<div class="form-group">
		       		<label for="email">Email</label>
		       		<input type="text" class="form-control" ng-model="email" id="email">
		       	</div>

		       	<div class="form-group">
		       		<label for="address">Address</label>
		       		<input type="text" class="form-control" ng-model="address" id="address">
		       	</div>

		       	<div class="form-group">
		       		<label for="phone">Phone Number</label>
		       		<input type="text" class="form-control" ng-model="phone" id="phone">
		       	</div>

		       	<button type="button" class="btn btn-primary" ng-click="insertData()" type="submit">Insert</button>
		   	</form>
		</div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        
      </div>
    </div>
  </div>
</div>
</div>
 
</body>
</html>  

controller/User.php

 <?php 
defined('BASEPATH') OR EXIT ('DIRECT ACCESS IS NOT ALLOWED');

class User extends CI_Controller{
    public function index(){
        $this->load->view('user_view');
    }

    public function user_list(){
        $data = $this->user_model->get_user_list();
        $this->output->set_content_type('application/json')->set_output(json_encode($data));
    }

    public function insert_user(){
        //$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
        $_POST = json_decode(file_get_contents('php://input'),true);
        $data = $_POST;
        $this->user_model->insert_user_data($data);
    }

    public function delete_user(){
        $_POST = json_decode(file_get_contents('php://input'),true);
        $email= $_POST['email'];
        $this->user_model->delete_user_data($email);
    }
}
?>
  

model/user_model.php

 <?php 
defined('BASEPATH') OR exit('No direct script access allowed');
class User_model extends CI_Model{
    protected $table_name;

    public function __construct(){
        parent::__construct();
        $this->table_name = 'user';
    }

    public function get_user_list(){
        return $this->db->from($this->table_name)->get()->result_array();
    }

    public function insert_user_data($data){
        $this->db->insert($this->table_name, $data);
    }

    public function delete_user_data($email){
        $this->db->where('email',$email);   
        $this->db->delete('user');
    }
}
?>
  

Сеть после нажатия на удаление.

введите описание изображения здесь

Ответ №1:

То, что вы здесь делаете неправильно, это передача электронной почты в качестве аргумента в функции, вы ее не используете:

 $scope.deleteData = function(email) {


        $http.post('<?php echo site_url('index.php/user/delete_user');?>',
            {'email':email}).error(function(){
                console.log("error");
            })
    }
  

Комментарии:

1. Спасибо, сэр, но все то же самое. Сеть-> Полезная нагрузка запроса-> {} Нет свойств

2. @Jasjeet Singh: На самом деле я руководствовался только тем, что то, что вы делаете не прямо здесь, может быть проблемой на стороне сервера или что-то не так.

Ответ №2:

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

 $http.post('<?php echo site_url("index.php/user/delete_user");?>',
        {'email':$scope.email}).error(function(){
            console.log("error");
        })
  

Комментарии:

1. выдает ли он какую-либо проверку ошибок в вашем браузере

2. используйте это before .error для запуска, если это успех code .затем(функция (ответ) { оповещение(«успех»); }); code

3. Спасибо, наконец, исправил это, я просто поместил данные post в переменную и удалил $scope. $область.deleteData = функция(Эл) { если(Подтвердить(«вы уверены, что хотите удалить эту запись?»)){ ВАР email1= электронная почта; $протоколу HTTP.пост(‘<?php echo site_url(«index.php/user/delete_user»);?>’, {‘электронная почта’:email1}).ошибка(функция(){ консоли.лог(«ошибка»); }); } }