Cuando llamo a la función siempre obtengo un valor indefinido, no entiendo qué puede arruinarlo.
Has iniciado sesión como indefinido, Error indefinido
Guión Ajax:
function Submit() { console.log('asd') $.ajax({ url: "Server.php", type: "POST", dataType: "json", data: { name: "Test2", email: "Test@gmail.com" }, success: function(data, textStatus, jqXHR) { console.log("You are logged in as: ", data.name); $('#user').html("You are logged in as: " + data.name); }, error: function(request, error, data) { console.log(arguments); alert(" Can't do because: " + error + " DATA: " + data); } }) }Guión PHP:
<?php header("Content-type: application/json; charset=utf-8"); $errors = []; $data = []; if (empty($_POST['name'])) { $errors['name'] = 'Name is required.'; } if (empty($_POST['email'])) { $errors['email'] = 'Email is required.'; } if (!empty($errors)) { $data['success'] = false; $data['errors'] = $errors; } else { $data['success'] = true; $data['message'] = 'Success!'; $data['name'] = $_POST['name']; } echo json_encode($data); ?>Probé todas las soluciones en vano, por lo que todavía obtengo un valor indefinido. Poco a poco estoy empezando a pensar que no hay nada malo con el guión.
Desea usar data.name pero nunca devuelve el nombre. de ahí lo indefinido. He agregado data.name en el siguiente ejemplo y parece funcionar bien.
<?php header("Content-type: text/html; charset=utf-8"); $errors = []; $data = []; if (empty($_POST['name'])) { $errors['name'] = 'Name is required.'; } if (empty($_POST['email'])) { $errors['email'] = 'Email is required.'; } if (!empty($errors)) { $data['success'] = false; $data['errors'] = $errors; } else { $data['success'] = true; $data['message'] = 'Success!'; $data['name'] = $_POST['name']; } echo json_encode($data); ?> Además, los parámetros utilizados en la función de éxito están en un orden diferente al que parece usar, en su caso, la request tendrá sus datos.
el parámetro de devolución de llamada no
success:function(request, data, error)pero
success: function(data, textStatus, jqXHR) data.name por supuesto undefined porque es una string
y su Server.php devuelve esto
{"success":true,"message":"Success!"} no data.name pero data.success y data.message
así que tienes que escribir
if (!empty($errors)) { $data['success'] = false; $data['errors'] = $errors; } else { $data['success'] = true; $data['message'] = 'Success!'; $data['name'] = $_POST['name']; // add this }