Jump to content

call to fetch information from active directory on click of an element from list


PriyaSingh

Recommended Posts

I have made an ajax call (using file activedirectory.php) to active directory to retrieve information such as name,thumbnail photo,mail etc.
 
the ajax call is made on click  of a name in a leaderboard ,to fetch only that person's info by matching the post['id'].
 
The problem is that I am unable to retrieve any information and the console gives me an error saying :
 
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
the error type makes it clear that it is unable to pull any data whatsoever.
 
.php file that has been used here :(activedirectory.php)  -- 
 <?php
    /**
     * Get a list of users from Active Directory.
     */
    $ad_users = '';
    $message = '';
    $ldap_password = 'Qwerty@33xxxxxx';
    $ldap_username = 'maxxxxxxxxxxxx';
    $server = 'ldap://xxxxxxxxxx';
    $domain = '@asia.xxxxxx.com';
    $port       = 389;
    $ldap_connection = ldap_connect($server, $port);

    if (FALSE === $ldap_connection){
        // Uh-oh, something is wrong...
    }

    // We have to set this option for the version of Active Directory we are using.
    ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version');
    ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); // We need this for doing an LDAP search.

    if (TRUE === ldap_bind($ldap_connection, $ldap_username.$domain, $ldap_password)){
      $base_dn = "OU=Employees,OU=Accounts,OU=xxxxx,DC=xxxxx,DC=xxxxxx,DC=com";

      $kid = 'NonExistingAccount';
    if (preg_match('#SAM_NAME_MATCHING_REGEX#', $_POST['id'])) {
      $kid = $_POST['id'];
    }
    $search_filter = "(&(objectCategory=person)(samaccountname={$kid}))";
        $attributes = array();
        $attributes[] = 'givenname';
        $attributes[] = 'mail';
        $attributes[] = 'samaccountname';
        $attributes[] = 'sn';
        $result = ldap_search($ldap_connection, $base_dn, $search_filter, $attributes);
        $maxPageSize = 1000;
        if (FALSE !== $result){
            $entries = ldap_get_entries($ldap_connection, $result);
            for ($x=0; $x<$entries['count']; $x++){
                if (!empty($entries[$x]['givenname'][0]) &&
                     !empty($entries[$x]['mail'][0]) &&
                     !empty($entries[$x]['samaccountname'][0]) &&
                     !empty($entries[$x]['sn'][0]) &&
                     'Shop' !== $entries[$x]['sn'][0] &&
                     'Account' !== $entries[$x]['sn'][0]){
                    $ad_users[strtoupper(trim($entries[$x]['samaccountname'][0]))] = array('email' => strtolower(trim($entries[$x]['mail'][0])),'first_name' => trim($entries[$x]['givenname'][0]),'last_name' => trim($entries[$x]['sn'][0]));
                }
            }
        }
        ldap_unbind($ldap_connection); // Clean up after ourselves.
    }
    $message .= "Retrieved ". count($ad_users) ." Active Directory users\n";
    ?>

the javascript that has been used here :

  $('.leaderboard li').on('click', function () {
     $.ajax({
     url: "../popupData/activedirectory.php", // your script above a little adjusted
     type: "POST",
     data: {id:$(this).find('.parent-div').data('id')},
     success: function(data){
     console.log(data);
     data = JSON.parse(data);
     $('#popup').fadeIn();

    //whatever you want to fetch ......
     // etc ..
     },
     error: function(){
     alert('failed, possible script does not exist');
     }
     });
     });

 

Link to comment
Share on other sites

Did you not write that? Not sure what it's doing? Then you need to learn Javascript.

 

There's a line of code in there that pretty clearly tries to parse a value as JSON. The error message gives you a pretty big hint. Remove that line.

Link to comment
Share on other sites

Did you not write that? Not sure what it's doing? Then you need to learn Javascript.

 

There's a line of code in there that pretty clearly tries to parse a value as JSON. The error message gives you a pretty big hint. Remove that line.

You misunderstood that.I am talking about how to pull the thumbnail photo.Whatever,you are saying I already did that.The console doesenot show anything .Even if it is able to pull the data from the active directory,fetching it in the UI is the issue.

Link to comment
Share on other sites

I don't think you understand what requinix is saying.

 

The current code makes no sense. You're trying to parse the PHP output as JSON data, but there is no JSON data anywhere.

 

So the code is stolen somewhere from the Internet, and you have no idea what it's doing, right? This doesn't work. You need to understand the code and adjust it to your needs. Or hire somebody to do the thinking for you.

Edited by Jacques1
Link to comment
Share on other sites

I don't think you understand what requinix is saying.

 

The current code makes no sense. You're trying to parse the PHP output as JSON data, but there is no JSON data anywhere.

 

So the code is stolen somewhere from the Internet, and you have no idea what it's doing, right? This doesn't work. You need to understand the code and adjust it to your needs. Or hire somebody to do the thinking for you.

I understand some of the code in the JS is wrong.that is why I have come here.I have made the necessary changes as both of u suggest.Lets get to point here.U have any idea how to echo info from the above php file in an UI. If u know,kindly help.thanks.

Link to comment
Share on other sites

You're already receiving the data from PHP: in the success callback, data will be that "Retrieved * Active Directory users" string. Don't parse it as JSON, do use it however you want.

 

If you need help with the "use it however you want" part then you'll need to be more specific about what you want to do.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.