【问题标题】:execute cURL request from Jquery AJAX while passing variable在传递变量时从 Jquery AJAX 执行 cURL 请求
【发布时间】:2018-07-14 11:08:54
【问题描述】:

我已经研究了很多关于 PHP cURL 的知识,并且已经了解了相当多的 Jquery Ajax,但是我想要做的并不是直截了当。我正在使用返回用户昵称的 API 登录按钮进行 API 调用。

然后我向包含 curl 参数的 php 文件发出 ajax 请求,我想在其中传递用户昵称。

已解决

在 AJAX 请求中使用 data 我能够成功发送 javascript 变量 nickname 作为参数。

然后可以通过 cURL PHP 文件中的$nickname = $_GET['nickname']; 访问该变量。

感谢 rollstuhlfahrer 提供以下标记的解决方案。


Ajax 请求:

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 文件:

$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;

【问题讨论】:

  • 不清楚您在哪里可以访问此昵称。第 1 步需要更多细节
  • 在 AJAX 请求之前我可以访问该变量。
  • 在哪里?在客户端还是服务器端?
  • 客户端,它是一个javascript变量。我可以在 AJAX 请求之前访问它,并且可以使用@rollstuhlfahrer 下面的答案将它作为 URL 中的字符串传递,但是 php 脚本没有使用 _GET 过程读取它
  • 然后显示用于获取昵称的相关代码,这基本上是第一条评论的重点

标签: php jquery ajax curl get


【解决方案1】:

由于您使用的是GET,因此您可以将其作为查询参数传递:

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

另一种选择。如果内置字符编码,这具有美感:

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

Source

然后在您的 PHP 代码中,您检索传递的参数:

$nickname = $_GET['nickname'];

并将其附加到您的网址:

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

在通过 curl 发送昵称之前,您应该检查昵称是否有效。

【讨论】:

  • 漂亮,现在就试试这个然后回来!
  • 如果答案满足您的问题,请不要犹豫接受它
  • 我真的以为 $_GET['nickname'];建议会起作用,但它不起作用。返回:“必需的字符串参数'昵称'不存在”
  • 您检查过,ajax 调用正在传递昵称吗? - 你可以在浏览器的开发者工具中看到。
  • 感谢您的建议解决了所有问题,我的 js 需要一秒钟才能重新缓存!
猜你喜欢
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2017-05-30
  • 2015-03-23
相关资源
最近更新 更多