2017-01-30 7 views
0

я был в состоянии получить данные с помощью AJAX вызова из активной директории файл .The PHP используется для извлечения данных из активного каталога ниже:Как вытащить выбранные данные атрибута из ajax названных данных?

<?php 
 
$username = 'maxxxxxxx'; 
 
$password = 'xxxxxxxxx'; 
 
$server = 'ldap://xxxxxxx'; 
 
$domain = '@asia.xxxxxx.com'; 
 
$port  = 389; 
 

 
$ldap_connection = ldap_connect($server, $port); 
 

 
if (! $ldap_connection) 
 
{ 
 
    echo '<p>LDAP SERVER CONNECTION FAILED</p>'; 
 
    exit; 
 
} 
 

 
// Help talking to AD 
 
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3); 
 
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); 
 

 
$ldap_bind = @ldap_bind($ldap_connection, $username.$domain, $password); 
 

 
if (! $ldap_bind) 
 
{ 
 
    echo '<p>LDAP BINDING FAILED</p>'; 
 
    exit; 
 
} 
 
else 
 
{ 
 
\t echo 'login successful'; 
 
} 
 

 
$base_dn = "OU=Employees,OU=Accounts,OU=India,DC=asia,DC=xxxxx,DC=com"; 
 

 
$dispname="Mark Hwett"; 
 

 

 
$filter ="(&(objectClass=user)(displayName=$dispname))"; 
 

 
$attr = array("sn","givenname","employeeid","distinguishedname","displayname","samaccountName","department","manager","mail","title","thumbnailphoto"); 
 

 
$result = ldap_search($ldap_connection,$base_dn,$filter,$attr); 
 

 
$rescount = ldap_count_entries($ldap_connection,$result); 
 

 
$data = ldap_get_entries($ldap_connection,$result); 
 

 

 
if ($data["count"] > 0) 
 
{ 
 
for ($i=0; $i<$data["count"]; $i++) 
 
{ 
 
echo "<p> sn: " . $data[$i]["sn"][0]."<br/>"; 
 
echo "givenname: ". $data[$i]["givenname"][0] ."<br/>" ; 
 
echo "employeeID: " . $data[$i]["employeeid"][0]."<br/>"; 
 
echo "distinguishedName: " . $data[$i]["distinguishedname"][0]."<br/>"; 
 
echo "displayName: " . $data[$i]["displayname"][0]."<br/>"; 
 
echo "sAMAccountName: " . $data[$i]["samaccountname"][0]."<br/>"; 
 
echo "department: ". $data[$i]["department"][0]."<br/>"; 
 
echo "manager: " .$data[$i]["manager"][0]."<br/>"; 
 
echo "mail: ". $data[$i]["mail"][0]."<br/>"; 
 
echo "title: " .$data[$i]["title"][0]."<br/>"; 
 
//echo "photo: " .$data[$i]["thumbnailphoto"][0]."<br/>"; 
 

 

 
// echo "<br/><br/>"; 
 
} 
 
} 
 
else 
 
     { 
 
      echo "<p>No results found!</p>"; 
 
     } 
 

 

 
?>

Консоль браузера показывает, что выше PHP возвращает это:

<p> sn: xxxxxx<br/>givenname: xxxxx<br/> 
 
employeeID: 0050<br/ 
 
>distinguishedName: CN=xxxx xxxxx,OU=Employees,OU=Accounts,OU=India,DC=asia,DC=xxxxxxx,DC=com<br/> 
 
displayName: Mark Hewettk<br/>sAMAccountName: xxxxxxx<br/> 
 
department: xxxxx<br/>manager: CN=xxxxxx xxxxxxx,OU=Employees,OU=Accounts,OU=India,DC=asia,DC=xxxx,DC=com 
 
<br/> 
 
mail: [email protected]<br/> 
 
title: xyz<br/>

Я хочу взять только некоторые атрибуты из приведенных выше данных, таких как почта, DisplayName и т.д., и дисплей в моем HTML:

<h2 class="profile__name" id="emailOfUser">Email : </h2>

Теперь проблема заключается в JQuery, что я использовал здесь:

$('.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('name')}, 
 
success: function(data){ 
 
console.log(data); 
 

 
$('#popup').fadeIn(); 
 
    
 
$('#emailOfUser').html(data); //this line displays all data whereas I want to select only email,displayname from the above console data 
 

 

 

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

проблема заключается в следующем:

$('#emailOfUser').html(data);

эта строка отображает все данные, в то время как я хочу, чтобы выбрать только электронную почту, DisplayName из приведенных выше данных консольных

любезно помочь мне как выбрать только нужные данные атрибута из приведенных выше данных консоли браузера.

Я пытался конвертировать его в JSON после этого. Но не повезло. How to return an array from an AJAX call?

ответ

0

Вместо передачи данных клиенту в виде строки HTML вы можете передавать данные в виде простого JSON-объекта:

header('Content-Type: application/json'); 
echo json_encode($data); 

Таким образом, вы можете обрабатывать данные гораздо проще на стороне клиента поскольку он уже находится в формате, который понимает JavaScript.

Что-то вроде ...

$.ajax({ 
    url: "../popupData/activedirectory.php" 
    ... 
}).then(function(response) { 
    // now you have access to the data as a plain JS-Object 
    $('#emailOfUser').html(response.email + " - " + response.displayname); 
}); 

... должен сделать трюк.

+0

спасибо за ответ. Но я получаю ошибки «говорящий возможный сценарий не существует». I ahve mag ethe следующие изменения в .php-файле выше http://pastebin.com/fBDJqKFQ И следующие изменения в jquery http://pastebin.com/JTHeAjsi – JAne

+0

Где вы думаете, это ошибка? – JAne

+0

Вы можете разместить ссылку на вывод console.log? – subarachnid