AJAX - Returnarea a două obiecte JSON cu o singură funcție PHP
26 iul. 2013, 20:34:16
Vizualizări: 47.8K
Voturi: 0
Cum aș putea returna două obiecte JSON cu un singur apel AJAX și o funcție PHP? Orice ajutor este apreciat!
Iată funcția 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 ( "Eroare de conexiune." );
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], ',' );
// găsește poziția primei virgule în CN=Mxxxxxx,OU=Users,OU=MCR,DC=mfad,DC=mfroot,DC=org (câmpul directReports)
$eq = stripos ( $info['manager'][0], '=' );
// găsește poziția primului =
$s_lanid = substr ( $info['manager'][0], $eq+1, ( ( $comm-1 ) - ( $eq ) ) );
// obține subșirul dintre = și virgulă... pentru id-ul lan
$sup = getLDAPInfo ( $s_lanid, $bind, $ad, $dn );
// obține informațiile supervizorului...
}
echo json_encode($sup);
die();
}
Și codul 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);
}
});
});
});
Toate răspunsurile la întrebare
3
0
Dacă am înțeles corect, trebuie să le încapsulezi într-un array și să le transmiți către Javascript.
function get_ldap_attr() {
header("Content-type: application/json");
...
// presupunem că vrei să returnezi $second_var
echo json_encode(array($sup,$second_var));
die();
}
Funcția de succes a cererii JSON le va primi ca array. Le poți accesa folosind indexul întreg.
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] // prima variabilă $sup
response[1] // a doua variabilă $second_var
//jQuery('#empSupLanId').val(response.lanid);
//jQuery('#empSupName').val(response.fullname);
//jQuery('#empSupNumber').val(response.phone);
}
});
});
});

M-R
2.62K
26 iul. 2013 20:56:00
0
Cod 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('Se trimite....');
},
success: function (response) {
var obj = JSON.parse(response);
console.log(obj);
},
error: function (errorThrown, status, error) {
console.log( status );
}
});
})
});
})(jQuery);
Cod 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,
));
}
Atât.

Razon Komar Pal
316
7 nov. 2018 07:45:54
1
<script type="text/javascript">
$(document).ready(function(){
//script 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" placeholder="Nume și Prenume"/>
<input type="text" id="adresse" disabled="true" size="58" placeholder="Adresă"/>
Comentarii despre cod:
1. Acesta este un script jQuery care:
- Se execută când documentul este gata (ready)
- Ascultă evenimentul de schimbare pe elementul cu ID-ul "emp_mat"
- Face o cerere AJAX către emp_info.php
- Preia răspunsul JSON și completează câmpurile "nom_prenom" (Nume și Prenume) și "adresse" (Adresă)
2. Am adăugat placeholder-uri în câmpurile de input pentru claritate
3. Structura codului rămâne neschimbată, doar cu comentarii traduse și câteva îmbunătățiri minore de UX

Ahdi Kaddes
9
26 iul. 2018 11:57:59
Întrebări similare
6
răspunsuri
5
răspunsuri