Intereting Posts
Создание результата вызова AJAX () в Cross-Origin Request Blocked error Как проверить, находится ли целое число в пределах диапазона? Как декодировать строки заголовков писем с их типом кодировки в них на PHP Сделать несколько страниц из запроса mysql Преобразование элемента DOM в строку в PHP Как поймать сигнал KILL или HUP или пользовательский прерывание? Как добавить http: //, если он не существует в URL? Сортируемый список Jquery не будет сериализоваться, почему? Как добавить элементы в DOMNodeList в PHP? Попытка создать статический класс базы данных, доступ к которому я могу получить из любой функции вне класса PHP Получить метаданные удаленного файла .mp3 (из URL) Почему люди используют синглтоны в своей структуре PHP Графический дизайн PHPExcel (граница, цвет графа, внутреннее положение графика) Удалить все теги html из строки php Как избежать строки из PHP для javascript?

Как передать результат mysql как jSON через ajax

Я не уверен, как передать результат mysql-запроса на html-страницу через ajax JSON. ajax2.php

$statement = $pdo - > prepare("SELECT * FROM posts WHERE subid IN (:key2) AND Poscode=:postcode2"); $statement - > execute(array(':key2' => $key2, ':postcode2' => $postcode)); // $row = $statement->fetchAll(PDO::FETCH_ASSOC); while ($row = $statement - > fetch()) { echo $row['Name']; //How to show this in the html page? echo $row['PostUUID']; //How to show this in the html page? $row2[] = $row; } echo json_encode($row2); 

Как передать приведенный выше результат запроса для отображения на html-странице через ajax ниже?

мой аякс

 $("form").on("submit", function () { var data = { "action": "test" }; data = $(this).serialize() + "&" + $.param(data); $.ajax({ type: "POST", dataType: "json", url: "ajax2.php", //Relative or absolute path to response.php file data: data, success: function (data) { //how to retrieve the php mysql result here? console.log(data); // this shows nothing in console,I wonder why? } }); return false; }); 

Ваша json-кодировка должна быть такой:

  $json = array(); while( $row = $statement->fetch()) { array_push($json, array($row['Name'], $row['PostUUID'])); } header('Content-Type: application/json'); echo json_encode($json); 

И в вашей части javascript вам не нужно ничего делать, чтобы вернуть свои данные, он хранится в data var из функции успеха. Вы можете просто отобразить его и делать с ним все, что хотите на своей веб-странице.

В функции успеха ajax вы можете использовать JSON.parse (данные) для отображения данных JSON.

Вот пример:

Разбор JSON в JavaScript?

 header('Content-Type: application/json'); $row2 = array(); $result = array(); $statement = $pdo->prepare("SELECT * FROM posts WHERE subid IN (:key2) AND Poscode=:postcode2"); $statement->execute(array(':key2' => $key2,':postcode2'=>$postcode)); // $row = $statement->fetchAll(PDO::FETCH_ASSOC); while( $row = $statement->fetch()) { echo $row['Name'];//How to show this in the html page? echo $row['PostUUID'];//How to show this in the html page? $row2[]=$row; } if(!empty($row2)){ $result['type'] = "success"; $result['data'] = $row2; }else{ $result['type'] = "error"; $result['data'] = "No result found"; } echo json_encode($row2); 

и в вашем скрипте:

 $("form").on("submit",function() { var data = { "action": "test" }; data = $(this).serialize() + "&" + $.param(data); $.ajax({ type: "POST", dataType: "json", url: "ajax2.php", //Relative or absolute path to response.php file data: data, success: function(data) { console.log(data); if(data.type == "success"){ for(var i=0;i<data.data.length;i++){ //// and here you can get your values // var db_data = data.data[i]; console.log("name -- >" +db_data.Name ); console.log("name -- >" +db_data.PostUUID); } } if(data.type == "error"){ alert(data.data); } } }); return false; }); 

вы можете сохранить json закодированную строку в массив, а затем передать ее значение javascript.

См. Ниже код.

 <?php // your PHP code $jsonData = json_encode($row2); ?> 

Ваш код JavaScript

 var data = '<?php echo $jsonData; ?>'; 

Теперь переменная data имеет все данные JSON, теперь вы можете двигаться вперед с кодом, просто удалите строку ниже

  data = $(this).serialize() + "&" + $.param(data); 

он не нужен, поскольку переменная data является строкой.

И в вашем файле ajax2.php вы можете получить это через

 json_decode($_REQUEST['data']) 

Я бы просто ..

 $rows = $statement->fetchAll(FETCH_ASSOC); header("content-type: application/json"); echo json_encode($rows); 

затем со стороны JavaScript:

 xhr.addEventListener("readystatechange",function(ev){ //... var data=JSON.parse(xhr.responseText); var span=null; var i=0; for(;i<data.length;++i){span=document.createElement("span");span.textContent=data[i]["name"];div.appendChild(span);/*...*/} } 

(Не полагайтесь на веб-браузеры, анализируя его для вас в ответ. Из-за заголовка application / json, он отличается между браузерами … делайте это вручную с помощью responseText);