将HTML文件中的jQuery变量传递给php文件

将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传递到一个PHP文件,但在这方面遇到了困难

下面是一个简单的HTML文件“send.HTML”

有人知道这个问题的解决办法吗


谢谢。

删除,在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。这是可能的吗?如果您想在不提交表单的情况下直接caal
receive.php
,那么yopu必须使用e
isset()
检查消息变量,否则您将得到错误。确定。因此,当您运行
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 />'; 
?>