Summy
Summy

Reputation: 543

JSON response from php on AJAX call

I am doing a ajax call from java script and Im trying to get json response from php, if I set dataType as JSON, ajax error block is getting executed if not success block is getting executed, without specifying dataType if I try to console.log the response in success block I am getting nothing

JS

let CurrentDate = Date();
console.log(CurrentDate);

jsonObject = {
   'TrackName' : 'Material Science',
    'TrackDesc' : 'Test Text Test Text Test Text Test Text Test Text Test Text Test Text ',
    'Timestamp' : CurrentDate
}
console.log(jsonObject);
$.ajax({
    type:'post',
    url:'../../../../PHP/adminScripts/addNewTrack.php',
    contentType: "application/json",
    data: {trackDetails:jsonObject},
    dataType: "json",
    success: function(response) {
        console.log('SUCCESS BLOCK');
        console.log(response);
    },
    error: function(response) {
        console.log('ERROR BLOCK');
        console.log(response);
    }
});

PHP

<?php
header('Content-type: application/json');
include('../connection.php');

if($_POST) {
$obj = $_POST['trackDetails'];

$TrackName = mysql_real_escape_string($obj['TrackName']);
$TrackDesc = mysql_real_escape_string($obj['TrackDesc']);
$TrackAdderID = 'Admin ';                  //$_SESSION["userID"];
$Timestamp = mysql_real_escape_string($obj['Timestamp']);

$response_array['status'] = 'status123';
echo json_encode($response_array);

please help me figure out how to get json response to an ajax call in PHP

Upvotes: 5

Views: 19850

Answers (4)

Dhruv
Dhruv

Reputation: 2100

You can convert the PHP array in JSON format with json_encode() function and return as a response. Set dataType: 'JSON' when send AJAX request.

Upvotes: 0

Korkut hacisalihoğlu
Korkut hacisalihoğlu

Reputation: 51

<?php

$return_code = 1;// or 0
$message = 'Message';
$time = date("Y-m-d H:i:s");

echo '{"return_code":"'.$return_code.'","mesaj":"'.$message .'","t":"'.$time  .'"}';
?>

then javascript in ajax success

<script>
success: function (e) {
const json = JSON.parse(e);
const validJSON = !!json;
}
</script>

json.t for time, json.return_code

Upvotes: 0

sangram singh
sangram singh

Reputation: 149

Remove contentType: "application/json" from your JS code, and in the PHP file close the braces properly, it will work fine.

Upvotes: 0

Mahfuzur Rahman
Mahfuzur Rahman

Reputation: 1545

  • In your JS file, remove contentType: "application/json",
  • In your php file, check "include file url" and
  • Close if statement block properly

JS File:

let CurrentDate = Date();
jsonObject = {
   'TrackName' : 'Material Science',
    'TrackDesc' : 'Test Text Test Text Test Text Test Text Test Text Test Text Test Text ',
    'Timestamp' : CurrentDate
}
$.ajax({
    type:'post',
    url:'addNewTrack.php',
    data: {trackDetails:jsonObject},
    dataType: "json",
    success: function(response) {
        console.log('SUCCESS BLOCK');
        console.log(response);
    },
    error: function(response) {
        console.log('ERROR BLOCK');
        console.log(response);
    }
});

PHP File:

<?php
    header('Content-type: application/json');
    include('../connection.php');

    if($_POST) {
        $obj = $_POST['trackDetails'];

        $TrackName = mysql_real_escape_string($obj['TrackName']);
        $TrackDesc = mysql_real_escape_string($obj['TrackDesc']);
        $TrackAdderID = 'Admin ';                  //$_SESSION["userID"];
        $Timestamp = mysql_real_escape_string($obj['Timestamp']);

        $response_array['status'] = 'status123';
        echo json_encode($response_array);
    }
?>

Upvotes: 4

Related Questions