2

I've researched a lot about PHP cURL and already know a fair amount of Jquery Ajax however what i'm trying to do isn't straight down the line. I'm making an API call using an API Login button that returns a users nickname.

I then make an ajax request to a php file containing the curl paramaters within which i want to pass the users nickname.

RESOLVED

Using data in the AJAX Request i was able to successfully send the javascript variable nickname as a parameter.

The variable was then accessible via $nickname = $_GET['nickname']; in the cURL PHP file.

Thank you to rollstuhlfahrer for providing the solution marked below.


Ajax Request:

var nickname = API.getUserInfo().value.nickname;
$.ajax({
  method: 'GET',
  url: "/curl-php-file.php",
  cache: false,
  data: {
    nickname: nickname, // Sends data as a URL paramater
  }
  success: function(response) {
    // Data
    var data = response.data.data;
    console.log(data);
  },
  error: function(response, val) {
    console.log("AJAX Request Failed");
  }
});

cURL PHP File:

$nickname = $_GET['nickname']; // Gets data from AJAX
require_once("../../../../../wp-load.php");
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://.../?nickname=' . $nickname,
CURLOPT_HTTPHEADER => array(
  'Accept: application/json',
  'Authorization: MYTOKEN'
)
));
$resp   = curl_exec($curl);
wp_send_json_success(json_decode($resp));
curl_close($curl);
exit;
8
  • Not clear where you have access to this nickname. Step 1 needs more detail Commented Feb 4, 2018 at 13:17
  • Prior to the AJAX request i have access to the variable. Commented Feb 4, 2018 at 13:42
  • Where? In client or server side? Commented Feb 4, 2018 at 13:43
  • Client side, it's a javascript variable. I have access to it before the AJAX request and am able to pass it as a string in the URL using the answer below by @rollstuhlfahrer however the php script isn't reading it using the _GET procedure Commented Feb 4, 2018 at 13:45
  • Then show the relevant code used to acquire nickname which is basically the point of the first comment Commented Feb 4, 2018 at 13:47

1 Answer 1

3

Since you are using GET, you can just pass it along as a query parameter:

$.ajax({
  method: 'GET',
  url: "/curl-php-file.php?nickname=" + nickname,
  cache: false,
  success: function(response) {
    // Data
    var data = response.data.data;
    console.log(data);
  },
}

Another option. This has the beauty if built-in character encoding:

$.ajax({
  url: "/curl-php-file.php",
  method: "get", 
  data: { 
    nickname: nickname,
  },

Source

Then in your PHP code, you retrieve the passed parameter:

$nickname = $_GET['nickname'];

And append it to your URL:

CURLOPT_URL => 'https://.../?nickname=' . $nickname,

You should do some checking, if the nickname is a valid one before sending it off via curl.

Sign up to request clarification or add additional context in comments.

5 Comments

beautiful, will try this now and get back!
If the answer satisfies your question, please don't hesitate to accept it
I really thought the $_GET['nickname']; suggestion would work but its not working. Returns: "Required String parameter 'nickname' is not present"
Have you checked, that the ajax call is passing the nickname? - You can see that in the developer tools in your browser.
Thanks your suggestion fixed everything, it took a second for my js to recache!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.