只是玩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在这种非常特殊的情况下不起作用。
答案 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()
不应用于调试,因为它会强制数据类型。