PriyaSingh Posted January 30, 2017 Share Posted January 30, 2017 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 https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/ Share on other sites More sharing options...
requinix Posted January 30, 2017 Share Posted January 30, 2017 You're not returning JSON. Don't try to parse it as JSON. Link to comment https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/#findComment-1542106 Share on other sites More sharing options...
PriyaSingh Posted January 30, 2017 Author Share Posted January 30, 2017 You're not returning JSON. Don't try to parse it as JSON. How do I amend the jquery above if,such is the case.Kindly help. Link to comment https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/#findComment-1542107 Share on other sites More sharing options...
requinix Posted January 30, 2017 Share Posted January 30, 2017 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 https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/#findComment-1542108 Share on other sites More sharing options...
PriyaSingh Posted January 30, 2017 Author Share Posted January 30, 2017 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 https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/#findComment-1542109 Share on other sites More sharing options...
Jacques1 Posted January 30, 2017 Share Posted January 30, 2017 (edited) 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 January 30, 2017 by Jacques1 Link to comment https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/#findComment-1542110 Share on other sites More sharing options...
PriyaSingh Posted January 30, 2017 Author Share Posted January 30, 2017 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 https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/#findComment-1542112 Share on other sites More sharing options...
requinix Posted January 30, 2017 Share Posted January 30, 2017 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 https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/#findComment-1542113 Share on other sites More sharing options...
requinix Posted January 30, 2017 Share Posted January 30, 2017 https://forums.phpfreaks.com/topic/303060-how-to-pull-selected-attribute-data-from-ajax-called-data/ Link to comment https://forums.phpfreaks.com/topic/303056-call-to-fetch-information-from-active-directory-on-click-of-an-element-from-list/#findComment-1542119 Share on other sites More sharing options...
Recommended Posts