【问题标题】:Ajax request to send CURL requestAjax 请求发送 CURL 请求
【发布时间】:2020-04-05 18:10:13
【问题描述】:

我正在通过 Ajax 从 from 提交数据,它需要向端点发出 curl 请求。我没有收到任何错误,但是当我检查端点中的数据时,它不存在。如果我只使用普通的 html 提交表单,那么它可以工作。所以,我想象的 CURL 代码有问题。

<?php

  $response = [];
  $message = '';

   $data = [
        'first_name'      => $_POST['first_name'],
        'last_name'       => $_POST['last_name'],
        'email'           => $_POST['email'],
];


$options = [
    CURLOPT_URL        => 'https://someEndpoint.com?encoding=UTF-8',
    CURLOPT_POST       => true,
    CURLOPT_POSTFIELDS => $data,
    CURLOPT_RETURNTRANSFER => 1
];


$curl = curl_init();


curl_setopt_array($curl, $options);


$results = curl_exec($curl);


curl_close($curl);

$response['success'] = true;
$response['message'] = 'Thank you, your request has been submitted.';

echo json_encode($response);

【问题讨论】:

  • 不应该是CURLOPT_RETURNTRANSFER, 1CURLOPT_RETURNTRANSFER =&gt; 1
  • 啊,是的。谢谢。但这并没有解决问题
  • 发布数据也应该像first_name=foo&amp;last_name=bar 一样发布,而不是作为数组发布。试试看:CURLOPT_POSTFIELDS =&gt; http_build_query($data)
  • 哥们,你是个传奇!请把它作为你的答案

标签: php ajax curl


【解决方案1】:

您当前正在将帖子字段作为数组传递。但是,cURL 期望它以这种格式作为字符串传递:

first_name=foo&last_name=bar&...

这就像一个查询字符串。

我们可以使用http_build_query()将数组转换为上述格式:

CURLOPT_POSTFIELDS => http_build_query($data),

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多