Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free.

I've been having this problem for a while and tried many solutions which haven't worked. I am trying to use $http.post to send json data to a php script named processCustomers.php which is part of my API

The post request is

angular.extend(obj, {id: id});
  $http({
    method: 'POST',
    url: '../API/processCustomers.php',
    headers: { 'Content-Type': 'application/json' },
    dataType: 'json',
    data: obj
   }).success(function (data) {
    console.log(data);
  });
};

and the processCustomers is

$newCustomers = filter_has_var(INPUT_POST, 'newCustomer');
if ($newCustomers) {#request to add new customer

    $exceptionalFields = ['customerID']; //

    $customersJSON = json_decode(filter_input(INPUT_POST, "newCustomer"));



    if (json_last_error() > 0) {
        echo DotCom::systemFeedBack("Sorry customer not created unknown error", "data sent is not a json object", 303);
        return;
    }



    foreach ($customersJSON as $key => $customer) {
        $parameterTypes = ""; # order determined by the sql returned by validateInputData()


    $entries = $func->validateInputData($tableMetaData,$customer, $parameterTypes, $exceptionalFields);


    if (!is_array($entries)) {
        echo $entries;
        return;
    }

     $results = $customers->createCustomer($entries, $parameterTypes, $link,$status);

When I send the request, the console in the browser says the response is text/html instead of application/json.I looked through many tutorials and examples and I also have tried the folowings: removing the headers and datatype - no effect wrapping the obj in JSON.stringify - results in header changing to application/x-www-form-urlencoded

share|improve this question
    
what is the issue...receiving in php or receiving in client? –  charlietfl May 14 at 5:13
    
I don't know much about PHP, but you said your response that you are getting back is of type text\html so did you try setting up contenttype in php like header('Content-Type: application/json'); ? –  Zee May 14 at 5:14

1 Answer 1

You need the following in your php file:

$json = file_get_contents('php://input');
$obj = json_decode($json);

$_POST will be empty when Content-Type: application/json is passed in headers.

Learned few days back from this questions

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.