Matt
Matt

Reputation: 2611

execute cURL request from Jquery AJAX while passing variable

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;

Upvotes: 2

Views: 6118

Answers (1)

rollstuhlfahrer
rollstuhlfahrer

Reputation: 4078

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.

Upvotes: 3

Related Questions