繁体   English   中英

在后端通过AJAX无法通过POST获取变量,而在前端完全可以

[英]Can't get variable by POST at backend via AJAX, while it's perfectly fine at front-end

好的,这是我的问题。 我试图通过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);

试图部署在本地主机(MAMP)和Heroku,这两个地方都存在相同的问题。

完整的代码avalible在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代码上创建了pull请求。 希望这会帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM