我正在尝试将变量从jQuery传递到PHP文件,我很难做到这一点。
这是一个简单的“send.html”HTML文件。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.ajax({
type: 'post',
url: 'receive.php',
data: {
message : "Hello World!",
},
success: function(data) {
//console.log(data);
alert(data);
}
});
});
});
</script>
</head>
<body>
<button>Click here</button>
</body>
</html>
我有一个“receive.php”的PHP文件。
<?php
$message = $_POST['message'];
echo $message.'<br />';
?>
当我点击send.html上的按钮时,我收到正确的警告“Hello World!”。 但是当我调用receive.php文件时,我收到以下错误消息:
Notice: Undefined index: message in receive.php on line 3
有谁知道这个问题的解决方案?
感谢。
答案 0 :(得分:1)
$_POST['message']
只有当您使用ajax调用php文件时单击提交按钮转到php文件时,这将在您的receive.php
中有效。但是,如果您在不单击“提交”按钮的情况下调用receive.php
文件,则会在您的php文件中发布任何内容时出错。因此,为避免此错误,请使用isset()
函数:
<?php
if(isset($_POST['message'])){
$message = $_POST['message'];
echo $message.'<br />';
} else {
echo "message not set";
}
?>
有关isset()
的更多详情,请参阅http://in3.php.net/isset
答案 1 :(得分:0)
删除jquery
的data参数中值的末尾$(document).ready(function(){
$("button").click(function(){
$.ajax({
type: 'post',
url: 'receive.php',
data: {message : "Hello World!"},
success: function(data) {
//console.log(data);
alert(data);
}
});
});
});
答案 2 :(得分:0)
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 Undefined index message error
文件时,您将无法获得receive.php
,并且还可以帮助您在某种程度上调试它。希望它有所帮助。