无法使用Ajax和PHP获取值

无法使用Ajax和PHP获取值,php,Php,我不知道为什么php可以从数据中返回值。 以下为表格: <form id="emailform" method="post" > <input type="text" name="email" id="email" value=""> <div class="result"></div> <input type="submit" name="generate" id="g

我不知道为什么php可以从数据中返回值。 以下为表格:

<form id="emailform" method="post" >
            <input type="text" name="email" id="email" value="">
            <div class="result"></div>
            <input type="submit" name="generate" id="generate" value="Save" >
</form>

和Ajax:

<script>
$(document).ready(function() {
    $('#generate').click(function(event) {
        event.preventDefault();
        email = $('#email').val();
        $.ajax({
            url: this.href, 
            type: 'POST',
            dataType: 'text',
            data:{'email':  email}, 
                success: function(html) {
                    alert(email);
                     $('.result').html('<p>Thank you for providing email. </p>');
                },
                error: function() {
                    $('#emailform').text('An error occurred');
                }
            });
    }); 
}); 
</script>

$(文档).ready(函数(){
$(“#生成”)。单击(函数(事件){
event.preventDefault();
email=$('#email').val();
$.ajax({
url:this.href,
键入:“POST”,
数据类型:“文本”,
数据:{'email':email},
成功:函数(html){
警报(电子邮件);
$('.result').html('感谢您提供电子邮件。

'); }, 错误:函数(){ $('#emailform').text('发生错误'); } }); }); });
和PHP:

<?php
     $email = $_GET['email'];
      echo $email;
?>

单击“保存”按钮后,我运行echo$电子邮件,但它不返回任何内容。你怎么能帮我


非常感谢。

您在ajax中使用了POST请求,但在php脚本中,您捕获了一个$\u get请求,请尝试将您的php脚本更改为:

<?php
if (isset($_POST['email']){
 $email = $_POST['email'];
  echo $email;
 }else{
 echo 'email is not set';
}
?>

您在ajax中使用的是POST请求,但在php脚本中捕获的是$\u get请求请尝试将您的php脚本更改为:

<?php
if (isset($_POST['email']){
 $email = $_POST['email'];
  echo $email;
 }else{
 echo 'email is not set';
}
?>

您可以这样进行AJAX调用:

$.ajax({
    url: window.location.href+'?email='+email, 
    type: 'GET',
    dataType: 'text', 
    success: function(html) {
        alert(email);
        $('.result').html('<p>Thank you for providing email. </p>');
    },
    error: function() {
        $('#emailform').text('An error occurred');
    }
  });
对于接收PHP部分,我认为最好使用:
if(!empty($\u GET['email'])
empty
的作用与isset
相同,但同时检查是否有值。只要
isset
,您仍然可以发送一封空电子邮件


由于您正在将数据发送到页面本身,因此可以使其变得更加简单。如果您只是将表单中的方法更改为
get
,而不是
post
,甚至可以删除整个AJAX请求。您可以这样进行AJAX调用:

$.ajax({
    url: window.location.href+'?email='+email, 
    type: 'GET',
    dataType: 'text', 
    success: function(html) {
        alert(email);
        $('.result').html('<p>Thank you for providing email. </p>');
    },
    error: function() {
        $('#emailform').text('An error occurred');
    }
  });
对于接收PHP部分,我认为最好使用:
if(!empty($\u GET['email'])
empty
的作用与isset
相同,但同时检查是否有值。只要
isset
,您仍然可以发送一封空电子邮件



由于您正在将数据发送到页面本身,因此可以使其变得更加简单。您甚至可以删除整个AJAX请求,如果您只是将表单中的方法更改为
get
,而不是
post

只需将$\u get['email']更改为$\u post['email'],或者将AJAX调用中的类型更改为get,它应该可以正常工作。

只需将$\u get['email']更改为$\u post['email']或者更改ajax调用中的类型以获取,它应该能够完美地工作。

Hi。感谢您的回答,但它返回的电子邮件未设置。为什么会这样?在ajax调用中编辑
post
来获取
@SuperDJ似乎不起作用。我不知道为什么。@BuiPhuc您可以做的是将数据附加到url上。制作:
url:this.href+'?email='+email,
制作数据键useless@BuiPhuc看一个超级DJ的命题。感谢您的回答,但它返回的电子邮件未设置。为什么会这样?在ajax调用中编辑
post
来获取
@SuperDJ似乎不起作用。我不知道为什么。@BuiPhuc您可以做的是将数据附加到url上。制作:
url:this.href+'?email='+email,
制作数据键useless@BuiPhuc请参见a提出SuperDJ命题谢谢,但单击更新答案后它返回“出错”。谢谢,单击更新答案后它返回“出错”。我还有其他建议吗?谢谢你能再给我一个建议吗?谢谢
$.get( this.href+'?email='+email, function( data ) {
 console.log(data);
  alert( "Load was performed." );
});