Mi script php devuelve una respuesta en json:
echo json_encode(array( "Subject"=>$row['Subject'], "date"=>$row['Date'], "Sender"=>$row['username'], "sender_id"=>$row['user_id'], "Message"=>$row['Message']) );En JS, las columnas individuales deben insertarse en las diferentes matrices para usarlas más tarde en una tabla, pero permanecen vacías
Creo que el problema tiene que ver con async pero no sé cómo hacerlo.
Este es el código JS.
var id =45678; var names = []; var subjects = []; var dates = []; var messages = []; var sender_ids = []; function getData() { return $.ajax({ type: "post", url: '', data: {user: id}, dataType: 'json', success: function(response){ $.each(response, function(i, row) { names.push(response.Sender); subjects.push(response.Subject); dates.push(response.date); sender_ids.push(response.sender_id); }) } }); } $(document).ready( function() { getData().done(function (response) { if(response.Sender != null) { for (var i in response.Sender){ names.push(response.Sender[i]); alert(names); } } alert(names); }); });El problema es que devuelve la variable ajax que es incorrecta, la declaración de devolución debe estar dentro de la función de éxito y una en la función completa para que tenga una alternativa. Desafortunadamente, la parte .done no tiene un parámetro (respuesta). O vas a hacer todo tu trabajo en función de éxito o devolverás todo desde allí.
var id =45678; function getData(obj) { return ({ type: "post", url: '', data: {user: id}, dataType: 'json', success: function(response){ obj.names.push(response.Sender); obj.subjects.push(response.Subject); obj.dates.push(response.date); obj.messages.push(response.Message); obj.sender_ids.push(response.sender_id); return obj; }, complete: function(){ return obj; } }); } $(document).ready( function() { var obj = {} obj.names = []; obj.subjects = []; obj.dates = []; obj.messages = []; obj.sender_ids = []; obj = getData(obj); });Prueba esto. Deseo que esto pueda ayudarte.