0

I am working on a project where I use a lot of http requests. Most of the time the server will respond as a json with either:

{"error": "Request invalid"}

or

{"success": "Request successful"}

The server side page that returns the response looks like this:

<?php

    header('Content-type: application/json');
    $data = [];

    if (isset($_POST['action']) {
        if ($_POST['action'] == 'function_one') {
            /* Arbitary Function... */
            $data['success'] = 'This works...';
        } elseif ($_POST['action'] == 'function_two') {
            /* Arbitary Function... */
            $data['error'] = 'Example error';
        } elseif ($_POST['action'] == 'function_that_is_not_working') {
            $data['success'] = 'This unexpectedly does not interpret correctly...';
        }
    }

    $post_data = json_encode($data);
    print_r($post_data);
?>

The javascript file does the http request and handles the data similar to:

if (xml_http.readyState == 4 && xml_http.status == 200) {
    try {
        console.log(JSON.parse(xml_http.responseText));
        return JSON.parse(xml_http.responseText);
    } catch (e) {
        console.log(xml_http.responseText);
        return xml_http.responseText;
    }

}

So this all works absolutely fine, I have multiple functions all using the same code without an issue. The problem I have is that I have one specific action that does a request, if I set $data['success'] it does not interperet as a JSON object, but a string. If I set the key as anything else, it works fine.

I have tried commenting out the function in case there is some unexpected echo's etc. The JSON string is a valid JSON string, it's just this one action when using the success key that the JSON.parse doesn't see it as valid JSON so just outputs the string.

Am I missing something obvious? Are there other ways that I could test this?

Edit After a little more playing around I found out there was nothing wrong with the response, nor the JSON.parse. I had an issue with some of the script after causing an error. Solution: Always look at the bigger picture, and the subsequent processes.

George
  • 17
  • 1
  • 4

0 Answers0