Awais Goshi
Awais Goshi

Reputation: 19

ajax not work and not show php data

when one record then show data when multiple record come then not show data other site. ajaxx.php

<?php 
    include 'database.php';
    session_start();

    $post = $_POST;


        $search = $post['search'];
        $searchType = $post['searchType'];

        if ($searchType == 'all')
                {$sql = "SELECT DISTINCT title  FROM hadees WHERE title LIKE '$search%' AND (type='Bukhari' OR type='Muslim') ";}
            else
                {$sql = "SELECT DISTINCT title FROM hadees WHERE title LIKE '$search%' AND type='$searchType' ";}

        $result = mysqli_query($db,$sql);

        if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                $row['title'];
                echo json_encode($row);
            }
        } else 
            { echo "Not Found Result" ; }


?>

when data record is one then append the data successfully when multiple record come then not show data and append not work

javascript code

function searchh()
{
    var type = $("input[name='type']:checked").val();
    var searchhh = $( ".myButton option:selected" ).text();
    debugger;
    $.ajax({
                    url: 'ajaxx.php',
                    type: "POST",
                    data: {'searchType':type, 'search':searchhh},
                    success: function (data) {
                        var duce = jQuery.parseJSON(data);
                        alert(duce.title);
                    }
                });
}

Upvotes: 1

Views: 44

Answers (2)

Scuzzy
Scuzzy

Reputation: 12332

You are producing invalid JSON by using echo json_encode($row); within a loop.

Try to craft an array of rows, and then display it.

if($result->num_rows > 0)
{
    $output = array();
    while($row = $result->fetch_assoc())
    {
        output[] = $row;
    }
    if($searchType == 'all')
    {
        echo json_encode($output);
    }
    else
    {
        echo json_encode(current($output)); // print just one
    }
}

Upvotes: 0

Get Off My Lawn
Get Off My Lawn

Reputation: 36341

I think your issue is in the while loop. You don't want to encode each row one-by-one, but as a whole like this.

        $myResults = [];
        while($row = $result->fetch_assoc()) {
            $row['title'];
            $myResults[] = $row;
        }
        echo json_encode($myResults);

Upvotes: 1

Related Questions