angularjs pass url param to php

2019-09-04 05:28发布

问题:

how to pass URL parameter to php variable using angularjs routing?

This is routing_script.js :

var scotchApp = angular.module('HRModuleApp', ['ngRoute']);

scotchApp.config(function($routeProvider) {
    $routeProvider

        .when('/', {
            templateUrl : 'pages/home.html',
            controller  : 'mainController'
        })
        // route for the home page
        .when('/home', {
            templateUrl : 'pages/home.html',
            controller  : 'mainController'
        })
    // route for the contact page
        .when('/public_profile:user_id', {
            templateUrl : 'pages/public_profile.php',
            controller  : 'contactController'
        })

        // route for the contact page
        .when('/add_user', {
            templateUrl : 'pages/add_user.html',
            controller  : 'contactController'
        });
});

what else should I add to this? how to forward id_user parameter from url to a php variable... so php can execute some sql...

I also read about how angular isnt for something like this... but I need it... and I need it urgently...

thank you!!!

here is the variable $term that needs that url parameter in php file:

<?php
$term = mysql_real_escape_string($_REQUEST['user_id']);

回答1:

ok, if got your question right you want 'pages/public_profile.php' to read a GET parameter passed by angular so it can be executed before the view is rendered, maybe something like this do the trick:

    .when('/public_profile/:user_id', {
        templateUrl: function(attrs){ 
            return 'pages/public_profile.php?user_id=' + attrs.user_id; },
        controller  : 'contactController'
    })

by changing your 'templateUrl' from a string to a function that dinamicly add the parameter to the url as a get param



回答2:

In your contactController

function contactcontroller(['$scope','$stateParams','$http'],function($scope,$stateParams,$http){

       //here you have your user_id
       var user_id = $stateParams.user_id;

      //now you can use $http to make a request to your server
       $http.post('your_url',{'usr_id':user_id})
           .success(function(response){
                //handle OK response
            })
           .error(function(response){
                //habndle error
            })

})

NOTE: You should move all $https calls to a service.



回答3:

this is the javascript that triggers onclick event... a click on a row in datatable... the link I get looks fine, but php script doesnt get that url

    $(document).ready(function() {

    $(function(){
        $.ajax({
            url: 'http://localhost/hrmodel/public/pages/employees_datatables.php',
            data: {},
            dataType: 'json',
            success: function (data) {

            // Check if received data is indeed JSON Object and not a string

                if (data.substring) {
                    console.log('is string');
                } else{
                    console.log('is not string');
                }

            // Setup for individual column search - add a text input to each footer cell

                $('#employees tfoot th').each( function () {
                    var title = $('#employees thead th').eq( $(this).index() ).text();
                    $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
                } );

            // Initialize Datatable

                var table = $('#employees').DataTable( {
                   "bProcessing": true,
                   "bSearchable" : true,
                   "bSortable" : true,
                   "bFilter": true,
                   "bInfo": true,
                   "bPaginate" : true,
                   "data" : data,
                   "columns": [
                        { "data": "korisnik_id",
                            "visible": false,
                            "searchable": false
                        },
                        { "data": "ime" },
                        { "data": "prezime" },
                        { "data": "3" },
                        { "data": "naziv" }
                    ]
                } );

            // Apply the search for each column

                table.columns().eq( 0 ).each( function ( colIdx ) {
                   $( 'input', table.column( colIdx ).footer() ).on( 'keyup change', function () {
                       table
                           .column( colIdx )
                           .search( this.value )
                           .draw();
                   } );
                } );

           // Highlighting rows

                var lastIdx = null;

               $('#employees tbody').on( 'mouseover', 'td', function () {
                   var colIdx = table.cell(this).index().column;

                   if ( colIdx !== lastIdx ) {
                       $( table.cells().nodes() ).removeClass( 'highlight' );
                       $( table.column( colIdx ).nodes() ).addClass( 'highlight' );
                    }
                } )
                .on( 'mouseleave', function () {
                   $( table.cells().nodes() ).removeClass( 'highlight' );
                } );

            // Send user_id of selected row to PHP script

                $('#employees tbody').on( 'click', 'tr', function () {
                   var id = table.row( this ).data().korisnik_id;
                   $(this).addClass('chosenUser');
                   window.location = '#/public_profile.php?user_id=' + id;
/*
                   $.ajax({
                        type: 'POST',
                        url: 'http://localhost/hrmodel/public/pages/public_profile.php',
                        data: { user_id : id },
                        dataType: 'json',
                        success: function (data) {}
                    } );
*/
                } );

            } // End of ajax : success
        }); // End of .ajax request
    }); // End of function()
}); // End of document.ready()