将HTML文件中的jQuery变量传递给php文件
我试图将一个变量从jQuery传递到一个PHP文件,但在这方面遇到了困难 下面是一个简单的HTML文件“send.HTML” 有人知道这个问题的解决办法吗将HTML文件中的jQuery变量传递给php文件,php,jquery,ajax,variables,Php,Jquery,Ajax,Variables,我试图将一个变量从jQuery传递到一个PHP文件,但在这方面遇到了困难 下面是一个简单的HTML文件“send.HTML” 有人知道这个问题的解决办法吗 谢谢。删除,在jquery数据参数值的末尾 $(document).ready(function(){ $("button").click(function(){ $.ajax({ type: 'post', url: 'receive.php', data: {messag
谢谢。删除,在jquery数据参数值的末尾
$(document).ready(function(){
$("button").click(function(){
$.ajax({
type: 'post',
url: 'receive.php',
data: {message : "Hello World!"},
success: function(data) {
//console.log(data);
alert(data);
}
});
});
});
$\u POST['message']
只有当您使用ajax调用php文件时,单击submit按钮转到php文件时,这才会在您的receive.php
中起作用。但是,如果您在没有单击提交按钮的情况下调用receive.php
文件,则会出现错误,因为php文件上没有任何内容。因此,为了避免此错误,请使用isset()
函数:
<?php
if(isset($_POST['message'])){
$message = $_POST['message'];
echo $message.'<br />';
} else {
echo "message not set";
}
?>
有关
isset()
的更多详细信息,请参见ajax请求如下:
$.ajax({
type: "POST",
url: "receive.php",
data: { message: "Hello World"}
})
.done(function(data) {
alert(data);
})
尝试使用done
构造,而不是success
,因为它现在已被弃用。对于receive.php
文件,请确保在url
参数中正确设置了路径,并且最佳做法应在receive.php
文件中:
<?php
$message = "NULL";
if(isset($_POST['message']))
$message = $_POST['message'];
echo $message.'<br />';
?>
这样,当您运行pull-up
receive.php
文件时,就不会出现未定义索引消息错误
,并且在某种程度上也会帮助您调试它。希望有帮助。你说的“我调用receive.php文件”是什么意思?正如你从HTML文件中看到的,我没有使用表单。当我在浏览器中键入receive.php的URL时(我的意思是调用receive.php),我希望消息变量能够被回显。@user3239379我刚刚理解了你的意思。当您使用message
变量向receive.php
发出post请求时,就会看到。receive.php
脚本获取消息并正确回显“hello world”,这就是为什么在浏览器中打开send.html
并单击按钮时会看到警报框。但是,当您仅在浏览器中打开receive.php
时,php文件无法知道消息变量,因为在您仅“调用”receive.phpIf时未设置该变量。如果您希望$message
即使在直接调用receive.php
文件时也能保持不变。您希望将发送到php文件的字符串存储在一个名为。因此,您应该设置会话变量,如$\u session['message']=$message
。此变量在整个会话中持续存在。此链接应使您从正确的方向开始。希望有帮助。你是说这种ajax方法只在提交表单时有效,对吗?这意味着我需要使用一个表单,在提交表单时调用receive.php。我想避免使用表单,因为它会自动调用receive.php。我希望用户在准备好后调用receive.php。这是可能的吗?如果您想在不提交表单的情况下直接caalreceive.php
,那么yopu必须使用eisset()
检查消息变量,否则您将得到错误。确定。因此,当您运行send.html
时,您没有看到一个警报说“hello World”?是的,我看到的是带有“hello World!”的警报。但是当我访问receive.php时,仍然没有设置$message。请看我在问题下面的评论,我想我明白你的意思了。
<?php
if(isset($_POST['message'])){
$message = $_POST['message'];
echo $message.'<br />';
} else {
echo "message not set";
}
?>
$.ajax({
type: "POST",
url: "receive.php",
data: { message: "Hello World"}
})
.done(function(data) {
alert(data);
})
<?php
$message = "NULL";
if(isset($_POST['message']))
$message = $_POST['message'];
echo $message.'<br />';
?>