javascript - 无法通过 AJAX 在后端通过 POST 获取变量,而在前端则完全没问题
问题描述
好的,所以,这是我的问题。我正在尝试通过 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 部署,这两个地方都有同样的问题。
解决方案
嗨 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 代码上创建了一个拉取请求。希望这会帮助你。
推荐阅读
- xml - 用于读取文件并在其他文件的特定位置复制内容的 Linux 脚本
- java - 如何在 Java 中以同步方式处理异步回调?
- javascript - 在javascript中定义后如何获取对象成员值
- sql - 使用以空字符结尾的字符串进行查询
- python - 当输入“+919888098880”时,查找所有未在列表中存储完整号码的方法
- php - 在 PHP PDO 中使用分页从数据库加载数据
- iphone - 如何在设备检查 API IOS 11 中使用两位和事务 ID
- mysql - Mysql 正则表达式搜索一系列电话号码
- selenium - Selenium:如何使用 NUnit 创建测试证据报告
- c# - 从 Masterpage 导航菜单访问 Web 表单