有关使用AJAX和PHP的$ _GET的基本问题

时间:2018-12-22 16:41:31

标签: php jquery ajax

只是玩ajax和php,我有一个简单的问题。 这些是以下相关文件。

file.php

<?php 
$bla = $_GET['pid'];
echo $bla;
?>

HTML

示例网站 URL的

HTML代码: somesite.com/blabla.php?pid=3

(它包含一个按钮,当您单击该按钮时,该按钮应该从3的URL中获取$ _GET值)

<!DOCTYPE html>
<html>
<head>
<title>Some Page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

</head>
<body>

<button class="fa fa-icon" onclick="someFunction()"></button>

</body>
</html>

JS:

<script>
function someFunction(){
    $.ajax({
    method: 'POST', //I've tried 'GET' here too. doesnt make a difference
    url: "file.php", 
    success: function(result)
{
alert(result);}
});
}
</script>

正如下面的评论者所述:我也尝试了以下方法

<script>
function someFunction(){
    $.ajax({
    method: 'POST', //I've tried 'GET' here too. doesnt make a difference
    url: "file.php", 
    data: {pid: 3}, // added this line
    success: function(result)
{
alert(result);}
});
}
</script>

当php文件回显$ bla为$ _GET ['pid']且URL中的pid为= 3时,警报为空,没有3。

有人可以解释为什么会这样吗?我不认为我了解上述代码的幕后发生了什么,以找出原因。

请注意,我并不是要解决特定的问题,或者只是想了解为什么$ _GET在这种非常特殊的情况下不起作用。

1 个答案:

答案 0 :(得分:0)

您没有在AJAX请求中发送任何数据,因此PHP无需读取和发送回任何数据。要解决此问题,请在请求中添加一个data属性,该属性包含pid键和所需的值,例如:

function someFunction(){
  $.ajax({
    method: 'GET',
    url: "file.php", 
    data: {
      pid: 3
    },
    success: function(result) {
      console.log(result);
    }
  });
}

请注意,我在这里使用method: 'GET',这很重要,因为您在PHP中使用$_GET,因此POST请求将不起作用。另请注意,我正在使用console.log()调试值。 alert()不应用于调试,因为它会强制数据类型。