AJAX / JS / PHP-在没有页面刷新或按钮单击的情况下回显值

时间:2012-07-28 06:07:52

标签: php javascript jquery html ajax

我目前正在使用JS / AJAX函数,无需刷新页面或点击按钮即可运行。在回显该值时,我遇到了一些问题。例如,如果我更改此行$email = $_POST['name'];,它的工作原理很完美,但如果我使用$email = $_POST['email'];这样的电子邮件的实际值,它就不起作用。我是JS& amp;的全新学习者。 PHP。

有人能告诉我为什么会给出这样的结果吗? EXAMPLE

<script>
    $(document).ready(function() {
        var timer = null; 
        var dataString;   
        function submitForm(){
            $.ajax({ type: "POST",
                url: "test1.php",
                data: dataString,
                success: function(result){
                    $('#special').html($('#resultval', result).html());
                }
            });
            return false;
        }
        $('#email').on('keyup', function() {
            clearTimeout(timer);
            timer = setTimeout(submitForm, 0050);
            var name = $("#email").val();
            dataString = 'name='+ name;
        });
    }); 
</script>

PHP

<?

if($_POST) {
    $email = $_POST['email'];
    if (preg_match('|^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$|i', $email)) {
        echo ('<div id="special"><span id="resultval">'.$email.'</span></div>');
    }
    else {
        echo ('<div id="special"><span id="resultval">Include a valid email address.</span></div>');

    }           
}
?>

2 个答案:

答案 0 :(得分:1)

好吧,你明确指定一个参数'name'来保存电子邮件地址。没有参数'email'你speficy。在你的JS代码中点击这一行:

dataString = 'name='+ name;

所以尝试像你一样阅读php中的电子邮件地址是没有意义的:

$email            = $_POST['email'];

您必须更改JS代码以将参数命名为与尝试在php代码中读取它相同的参数。


因此,您最有可能要做的就是从

更改当前的JS代码
        var name = $("#email").val();
        dataString = 'name='+ name;

        var email = $("#email").val();
        dataString = 'email='+ email;

答案 1 :(得分:0)

在客户端,浏览器发出带参数name的请求(因为dataString = 'name=' + name;),因此在服务器端,您可以按$POST['name']获取值。