kamenrider
kamenrider

Reputation: 15

Ajax get value from php

Ajax

$(document).ready(function(){
          $("#diklat").change(function(){
            var diklat = $("#diklat").val();
            $.ajax({
                url: "function.php",
                data: {'action': 'diklat'},
                cache: false,
                success: function(msg){
                    $("#angkatan").html(msg);
                }
            });
          });

PHP

    $get_action = $_GET['action'];
if($get_action=='diklat'){
        $diklat = $_GET['diklat'];
        $angkatan = mysql_query("SELECT id,name FROM batches WHERE IdMasterDiklat='$diklat' order by id");
        echo "<option>-- Pilih Angkatan --</option>";
        while($p = mysql_fetch_array($angkatan)){
            echo "<option value=\"".$p['id']."\">".$p['name']."</option>\n";
        }
    }

The value didnt include in my ajax, ajax only read echo. how to get that value

Upvotes: 1

Views: 9527

Answers (3)

J.K
J.K

Reputation: 1374

You should pass 2 variables, one action and another id (diklat)

Ajax:

$(document).ready(function(){
          $("#diklat").on('change', function(){
            var diklat = $("#diklat").val();
            $.ajax({
                type: "POST",
                url: "function.php",
                data: {'action': 'diklat', 'diklat':diklat},
                cache: false,
                success: function(msg){
                    $("#angkatan").html(msg);
                }
            });
          });

PHP

$action = isset($_POST['action']) ? $_POST['action'] : '';

if ($action == 'diklat')
{
    $diklat   = isset($_POST['diklat']) ? $_POST['diklat'] : '';
    $angkatan = mysql_query("SELECT id, name FROM batches WHERE IdMasterDiklat='$diklat' order by id");
    echo "<option>-- Pilih Angkatan --</option>";
    while($p = mysql_fetch_array($angkatan))
    {
        echo "<option value=\"".$p['id']."\">".$p['name']."</option>\n";
    }
}

Upvotes: 0

Vincent
Vincent

Reputation: 1044

Two things:

For a GET request, to ask a PHP server, data should be URL-encoded (as you see here, query string is just appended to the URL...) So tell 'data' : '?action=diklat' ...

EDIT : Jquery automatically converts object to Url-encoded query string... So It work with array ! I'm confusing with angular's $http...

And also, the parameter will be in $_GET['action'] (because action is parameter name, and diklat the value... So PHP convert query string to associative array, with parameters names as keysn and values as values...

Upvotes: 0

RJParikh
RJParikh

Reputation: 4166

You have written data: {'action': 'diklat'} but it should dilkat without quotes as its variable so in php you will get value in $_GET['action'].

Ajax

$(document).ready(function(){
          $("#diklat").change(function(){
            var diklat = $("#diklat").val();
            $.ajax({
                url: "function.php",
                data: {'action': diklat},
                cache: false,
                success: function(msg){
                    $("#angkatan").html(msg);
                }
            });
          });

PHP

if($_GET['action'] == 'diklat'){
    $diklat = $_GET['action'];
    $angkatan = mysql_query("SELECT id,name FROM batches WHERE IdMasterDiklat='$diklat' order by id");
    echo "<option>-- Pilih Angkatan --</option>";
    while($p = mysql_fetch_array($angkatan)){
        echo "<option value=\"".$p['id']."\">".$p['name']."</option>\n";
    }
}

Upvotes: 1

Related Questions