javascript - 无法通过 AJAX 在后端通过 POST 获取变量,而在前端则完全没问题

标签 javascript php jquery ajax curl

好的,所以,这是我的问题。我正在尝试通过 AJAX 将存储在 javascript 变量中的标签属性发送到后端(PHP)。

$.ajax({
    type: "POST",
    url: '/requests/mercury.php',
    data: {url : $(this).data('link')},
    success: function(data){
       console.log(data);
    }

这是我想要传递给 CURL 请求的 URL。

如果我手动写入正确的 URL,CURL 请求就可以工作,但由于某种原因我无法在后端检索变量。 我尝试过调试,似乎得到一个空数组,但我不知道为什么。

$link = $_POST['url'];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://mercury.postlight.com/parser?url=".$link);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "x-api-key: AU5zjyEqyL0LgR8zkb4Iurhlenpn52bGtbiqJA4t",
));

$x = curl_exec($ch);

curl_close($ch);

尝试在 localhost(MAMP) 和 Heroku 上部署,这两个地方都有同样的问题。

完整代码可在https://github.com/pjotrleshkin/RSSParsing获取

最佳答案

您好,Pjotr​​ Leškin,HTTP 请求方法存在问题。在您的index.php 上,Ajax 代码工作正常,因为您正在发送 POST 请求,但在链接单击上您将打开 /requests/mercury.php 这是一个 GET 请求。因此,要获取 /requests/mercury.php 加载时的参数,您需要 $_GET['url'] 并且需要将查询字符串与 url 一起传递。我对您的代码做了一些更改来处理 GET 和 POST 请求。

echo "<a href='requests/mercury.php' data-link = ".$item->link." target='_blank'>";

echo "<a href='requests/mercury.php?url={$item->link}' data-link = ".$item->link." target='_blank'>";

$link = $_POST['url'];

$link = "";

if (isset($_POST['title'])) {
    $link = $_POST['url'];
} else  {
    $link = $_GET['url'];
}

我已经在您的 github 代码上创建了一个拉取请求。希望这会对您有所帮助。

关于javascript - 无法通过 AJAX 在后端通过 POST 获取变量,而在前端则完全没问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466869/

相关文章:

javascript - 递归requestAnimationFrame() javascript循环直接跳到最后

javascript - 刷新页面无需不断刷新

javascript - IE 11 浏览器将自己识别为 Mozilla

javascript - 等待功能列表完成,然后重新加载页面

javascript - 基于所选复选框的渲染属性

javascript - 在 MVC Razor 中的 C# 和 Javascript 之间共享常量

PHP日期时间转换保存到MySQL

php - MySQL SELECT 语句只返回一行

javascript - CKfinder 和 Codeigniter 浏览服务器

jquery - 使用 jQuery 将 accesskey 设置为键盘数字键盘键