How to pass mysql result as jSON via ajax

I'm not sure how to pass the result of the mysql request to the html page via 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);

      

How can I pass the above request result to display in the html page via the ajax below?

my 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;

});

      

+3
json jquery ajax php mysql


source to share


5 answers


Your json encoding should be like this:

 $json = array();
 while( $row = $statement->fetch()) {
     array_push($json, array($row['Name'], $row['PostUUID']));
 }

    header('Content-Type: application/json');
    echo json_encode($json);

      



And in your javascript part, you don't need to do anything to get your data back, it is stored in the data var from the success function. You can just display it and do whatever you want in your webpage with it

+3


source to share


In the ajax success function, you can use JSON.parse (data) to display JSON data.

Here's an example:



Parsing JSON in JavaScript?

0


source to share


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);

      

and in the script:

$("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;

});

      

0


source to share


you can store the json encoded string to an array and then pass the javascript value.

See below code.

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

      

Your JavaScript code

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

      

Now the variable data

has all the JSON data, now you can move forward with the code, just remove below line

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

      

it is not needed because a variable data

is a string.

And in your file, ajax2.php

you can get this via

json_decode($_REQUEST['data'])

      

0


source to share


I would just ..

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

      

then from the JavaScript side:

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);/*...*/}
}

      

(Don't rely on web browsers to parse it for you in response. Due to the application / json header, it differs between browsers ... do it manually with responseText);

0


source to share







All Articles
Loading...
X
Show
Funny
Dev
Pics