Передача массива по AJAX из PHP. Получаю данные, но не могу вывести чистый код PHP/HTML
Проблема в том, что мне нужно вывести из PHP файла данные с разметкой HTML, а здесь он передается в Json.
А мне нужно вывести такие данные к примеру:
<?php
echo $d['seven'];
echo $d['eight'];
echo $d['nine'];
?>
Как это сделать? Желательно максимально упрощенный вариант. Большое спасибо за помощь.
Вот пример работающего кода, но не передающего данные в нужном формате.
<form method="post" id="ajax_form" action="" >
<input type="text" name="name" /><br>
<input type="text" name="year" /><br>
<input type="button" id="btn" value="Send" />
</form>
<br>
<div id="result_form"></div>
Передаем данные.
<script>
$( document ).ready(function() {
$("#btn").click(
function(){
sendAjaxForm('result_form', 'ajax_form', 'handler.php');
return false;
}
);
});
function sendAjaxForm(result_form, ajax_form, url) {
$.ajax({
url: url, //url страницы (action_ajax_form.php)
type: "POST", //метод отправки
dataType: "html", //формат данных
data: $("#"+ajax_form).serialize(), // Сеарилизуем объект
success: function(response) { //Данные отправлены успешно
result = $.parseJSON(response);
$('#result_form').html('Name: '+result.name+'<br>Year: '+result.phonenumber);
},
error: function(response) { // Данные не отправлены
$('#result_form').html('Error');
}
});
}
</script>
Исполняем.
<?php
if (isset($_POST["name"]) && isset($_POST["year"]) ) {
// Формируем массив для JSON ответа
$result = array(
'name' => $_POST["name"],
'phonenumber' => $_POST["year"]
);
// Переводим массив в JSON
echo json_encode($result);
}
?>
Ответы (2 шт):
Проблема в том, что мне нужно вывести
Нет, проблема в том, что Вы не сказали, чем Вас не устраивает приведенный код.
Как сочетаются эти две строчки? -
dataType: "html", //формат данных
...
echo json_encode($result);
dataType: "json",
...
//result = $.parseJSON(response);
$('#result_form').html('Name: ' + response.name + '<br>Year: ' + response.phonenumber);
Работающий пример.
В форме переставьте значения полей namе и сами поля на те, что вам нужны и все.
/ Страница к примеру index.php/**
<form action="path/to/server/script" method="post" id="my_form">
<input type="text" name="name" />
<input type="email" name="email" />
<input type="url" name="website" />
<input type="submit" name="submit" value="Submit Form" />
<div id="server-results"><!-- For server results --></div>
</form>
/ Все таже страница index.php/**
<script>
$("#my_form").submit(function(event){
event.preventDefault(); //prevent default action
var post_url = $(this).attr("action"); //get form action url
var request_method = $(this).attr("method"); //get form GET/POST method
var form_data = $(this).serialize(); //Encode form elements for submission
$.ajax({
url : 'handler.php',
type: request_method,
data : form_data
}).done(function(response){ //
$("#server-results").html(response);
});
});
</script>
*** Файл /* handler.php / в котором вы делаете со своими переменными что вам нужно. Для примера, я их просто вывел в echo**
<?php
/* Handler */
Подключаем базу данных из вашего сайта, если это необходимо.
if (isset($_POST["name"]) && isset($_POST["email"]) && isset($_POST["website"])) {
$name = $_POST['name'];
$email = $_POST['email'];
$website = $_POST['website'];
/* Здесь формируйте результаты как вы этого хотите, включая html код*/
echo $name . $email . $website;
}
?>