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

时间:2014-01-27 06:53:54

标签: php jquery ajax variables

我正在尝试将变量从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

有谁知道这个问题的解决方案?

感谢。

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,并且还可以帮助您在某种程度上调试它。希望它有所帮助。