简体   繁体   中英

my ajax call is returning html with json data

I am having a weird problem, I am trying to populate the datatable using ajax call to my php program which internally gets data from database.

php:

<?php
require_once('config.php');
$query = mysql_query("select * from productdetails");
while($fetch = mysql_fetch_array($query))
{
        $output[] = array ($fetch[0],$fetch[1],$fetch[2],$fetch[3],$fetch[4],$fetch[5]);
}
echo json_encode($output, JSON_FORCE_OBJECT);
?>

Html(ajax call):

$.ajax({
            url: 'process.php?method=fetchdata',
            data: "json",
            success: function(s){
            console.log($(s).text());
                    oTable.fnClearTable();
                        for(var i = 0; i < s.length; i++) {
                         oTable.fnAddData([
                                    s[i][0],
                                    s[i][1],
                                    s[i][2],
                                    s[i][3],
                                    s[i][4],
                                    s[i][5]
                                           ]);                                      
                                        } // End For

            },
            error: function(e){
               console.log(e.responseText); 
            }
            });

This generates the output as


( ! ) Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\\wamp\\www\\datatableone\\process.php on line 2 Call Stack #TimeMemoryFunctionLocation 10.0010242552{main}( )..\\process.php 0 20.0010242840http://www.php.net/function.mysql-connect' target='_new'>mysql_connect ( )..\\process.php 2 {"0":{"0":"1","1":"Iron","2":"AX12","3":"Google","4":"21.95","5":"HW"},"1":{"0":"2","1":"DartBoard","2":"AZ52","3":"Apple","4":"12.95","5":"SG"},"2":{"0":"3","1":"BasketBall","2":"BA74","3":"Microsoft","4":"29.95","5":"SG"},"3":{"0":"4","1":"Compopper","2":"BH22","3":"Google","4":"24.95","5":"HW"},"4":{"0":"5","1":"Gas Grill","2":"BT04","3":"Apple","4":"149.95","5":"AP"},"5":{"0":"6","1":"Washer","2":"BZ66","3":"Google","4":"399.99","5":"AP"}} 0 20.0010242840http://www.php.net/function.mysql-connect'target ='_ new'> mysql_connect().. \\ process.php 2 {“ 0”: {“ 0”:“ 1”,“ 1”:“ Iron”,“ 2”:“ AX12”,“ 3”:“ Google”,“ 4”:“ 21.95”,“ 5”:“ HW”}, “ 1”:{“ 0”:“ 2”,“ 1”:“ DartBoard”,“ 2”:“ AZ52”,“ 3”:“ Apple”,“ 4”:“ 12.95”,“ 5”:“ SG“},” 2“:{” 0“:” 3“,” 1“:” BasketBall“,” 2“:” BA74“,” 3“:” Microsoft“,” 4“:” 29.95“,” 5“:” SG“},” 3“:{” 0“:” 4“,” 1“:” Compopper“,” 2“:” BH22“,” 3“:” Google“,” 4“:” 24.95“,” 5“:” HW“},” 4“:{” 0“:” 5“,” 1“:” Gas Grill“,” 2“:” BT04“,” 3“:” Apple“, “ 4”:“ 149.95”,“ 5”:“ AP”},“ 5”:{“ 0”:“ 6”,“ 1”:“ Washer”,“ 2”:“ BZ66”,“ 3”: “ Google”,“ 4”:“ 399.99”,“ 5”:“ AP”}}

But my required output should be: (only json)

{"0":{"0":"1","1":"Iron","2":"AX12","3":"Google","4":"21.95","5":"HW"},"1":{"0":"2","1":"DartBoard","2":"AZ52","3":"Apple","4":"12.95","5":"SG"},"2":{"0":"3","1":"BasketBall","2":"BA74","3":"Microsoft","4":"29.95","5":"SG"},"3":{"0":"4","1":"Compopper","2":"BH22","3":"Google","4":"24.95","5":"HW"},"4":{"0":"5","1":"Gas Grill","2":"BT04","3":"Apple","4":"149.95","5":"AP"},"5":{"0":"6","1":"Washer","2":"BZ66","3":"Google","4":"399.99","5":"AP"}}

any suggestions please.

Thanks Sai

Solution:

PHP:

<?php
$servername = "localhost";
$username = "root";
$password = "123456";

try {
        $conn = new PDO("mysql:host=$servername;dbname=holt", $username, $password);
        $statement=$conn->prepare("SELECT * FROM productdetails");
        $statement->execute();
        $results=$statement->fetchAll(PDO::FETCH_ASSOC);
        $json=json_encode($results);
        echo $json;
    } catch(PDOException $e) {
        echo "Connection failed: " . $e->getMessage();
    }
?>

Thanks for suggestions.

As noted in the comments, you should turn off warnings, or better yet, write your code in a manner that doesn't produce warnings.

On turning off warnings: Turn off warnings and errors on php/mysql

You can suppress errors inline with the @ symbol, which is the error control operator in php. Putting @ at the beginning of your mysql_connect() line should get rid of it, but you should switch to PDO!

On PDO (which I recommend and use): http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

PDO protects you against SQL injection and allows queries to be sent to the database and constructed beforehand, and you send the inputs afterwards via "placeholders".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM