AJAX - Возврат двух JSON объектов с помощью одной PHP функции
26 июл. 2013 г., 20:34:16
Просмотры: 47.8K
Голосов: 0
Как мне вернуть два JSON объекта с помощью одного AJAX вызова и PHP функции? Буду благодарен за любую помощь!
Вот PHP функция:
function get_ldap_attr() {
header("Content-type: application/json");
$lan = $_POST['lan'];
$dn = get_site_option ( "ldapServerOU" );
$usr = get_site_option ( "ldapServerCN" );
$pw = get_site_option ( "ldapServerPass" );
$addr = get_site_option ( "ldapServerAddr" );
$ad = ldap_connect ( $addr )
or die ( "Ошибка подключения." );
ldap_set_option ( $ad, LDAP_OPT_PROTOCOL_VERSION, 3 );
ldap_set_option ( $ad, LDAP_OPT_REFERRALS, 0 );
$bind = ldap_bind ( $ad, $usr, $pw );
if ( $bind ) {
$SearchFor ="cn=".$lan;
$result = ldap_search ( $ad,$dn,$SearchFor );
$entry = ldap_first_entry ( $ad, $result );
if ( $entry != false ) {
$info = ldap_get_attributes ( $ad, $entry );
}
$comm = stripos ( $info['manager'][0], ',' );
// найти позицию первой запятой в CN=Mxxxxxx,OU=Users,OU=MCR,DC=mfad,DC=mfroot,DC=org (поле directReports)
$eq = stripos ( $info['manager'][0], '=' );
// найти позицию первого знака =
$s_lanid = substr ( $info['manager'][0], $eq+1, ( ( $comm-1 ) - ( $eq ) ) );
// получить подстроку между = и запятой... для lanid
$sup = getLDAPInfo ( $s_lanid, $bind, $ad, $dn );
// получить информацию о руководителе...
}
echo json_encode($sup);
die();
}
И jQuery:
jQuery(function() {
jQuery('#empLanId').on('blur', function() {
var lan = jQuery('#empLanId').val();
var ajaxurl = '<?php echo admin_url("admin-ajax.php", null); ?>';
var data = { action: "get_ldap", lan: lan};
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: data,
dataType: 'json',
success: function(response) {
jQuery('#empSupLanId').val(response.lanid);
jQuery('#empSupName').val(response.fullname);
jQuery('#empSupNumber').val(response.phone);
}
});
});
});
Все ответы на вопрос
3
0
Если я правильно понял, вам нужно обернуть их в массив и передать в JavaScript.
function get_ldap_attr() {
header("Content-type: application/json");
...
// предположим, вы хотите вернуть $second_var
echo json_encode(array($sup,$second_var));
die();
}
Функция success JSON-запроса получит их в виде массива. Вы можете обращаться к ним по целочисленному индексу.
jQuery(function() {
jQuery('#empLanId').on('blur', function() {
var lan = jQuery('#empLanId').val();
var ajaxurl = '<?php echo admin_url("admin-ajax.php", null); ?>';
var data = { action: "get_ldap", lan: lan};
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: data,
dataType: 'json',
success: function(response) {
response[0] // первая переменная $sup
response[1] // вторая переменная $second_var
//jQuery('#empSupLanId').val(response.lanid);
//jQuery('#empSupName').val(response.fullname);
//jQuery('#empSupNumber').val(response.phone);
}
});
});
});

M-R
2.62K
26 июл. 2013 г. 20:56:00
0
jQuery код:
(function ($) {
'use strict';
$(function () {
var value_1 = 10;
var value_2 = 20;
$('.btn').on('click', function(){
$.ajax({
url: 'your_ajax_url_here',
type: 'POST',
data: {
action : 'action_name',
val_1 : value_1,
val_2 : value_2,
},
beforeSend: function () {
console.log('Отправка....');
},
success: function (response) {
var obj = JSON.parse(response);
console.log(obj);
},
error: function (errorThrown, status, error) {
console.log( status );
}
});
})
});
})(jQuery);
PHP код:
function get_ldap_attr() {
$obj_val_1 = $_POST['val_1'];
$obj_val_2 = $_POST['val_2'];
echo json_encode(array(
'obj_1' => $obj_val_1,
'obj_2' => $obj_val_2,
));
}
Это всё.

Razon Komar Pal
316
7 нояб. 2018 г. 07:45:54
1
<script type="text/javascript">
$(document).ready(function(){
//jquery скрипт
$("#emp_mat").change(function(){
var emp_mat = $(this).val();
$.ajax({
url:"emp_info.php",
dataType:'json',
data:{data:emp_mat}
}).done(function(result)
{
$("#nom_prenom").val(result[0]); // Фамилия и имя
$("#adresse").val(result[1]); // Адрес
})
});
});
</script>
<input type="text" id="nom_prenom" disabled="true" size="58"/> <!-- Поле для фамилии и имени -->
<input type="text" id="adresse" disabled="true" size="58"/> <!-- Поле для адреса -->

Ahdi Kaddes
9
26 июл. 2018 г. 11:57:59
Похожие вопросы
5
ответов