php - How can I encode a cURL response to be a JSON object? -


i'm trying post php controller using jquery ajax. want controller retrieve data api , return data ajax function.

here javascript:

$(function() {      $.ajax({         type: 'post',         url: '/mycontroller/myaction/',         success: function(data) {                    console.log(data);         }     });  }); 

here action in controller:

public function myaction() {      $ch = curl_init();      $endpoint = 'https://endpointfortheapi.com';      curl_setopt($ch, curlopt_url, $endpoint);      curl_setopt($ch, curlopt_returntransfer, true);     curl_setopt($ch, curlopt_httpheader, array(         'content-type: application/json; charset=utf-8'     ));      $response = curl_exec($ch);      $response = json_encode($response);      echo $response;      curl_close($ch); } 

this seems work, however, when use json_encode() array returned escaped string, not json object. when console.log(data) in ajax request, see string this:

"[{\"firstproperty\":\"firstvalue\",\"secondproperty\":\"secondvalue\"}]" 

how can encode response array actual json object?

so you’re doing this:

$response = curl_exec($ch);     $response = json_encode($response); 

unclear returned data https://endpointfortheapi.com, seems me taking source json response & double-encoding response when json_encode again.

if send plain string json_encode instead of object or array—it escape seeing. remove or comment out line & see if clears things up.

also, should setting proper json headers in php before echo. based on mention above & headers refactor php code this:

public function myaction() {      $ch = curl_init();      $endpoint = 'https://endpointfortheapi.com';      curl_setopt($ch, curlopt_url, $endpoint);      curl_setopt($ch, curlopt_returntransfer, true);      $response = curl_exec($ch);     // $response = json_encode($response);      // header('x-json: (' . $response. ')');     header('content-type: application/json');     echo $response;      curl_close($ch);  } 

i commented out x-json header since there controversy surrounding use of custom header used applications automatically evaluate json data if using the prototype javascript framework. not worth hassle if not using prototype , don’t care such things.


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -