1

我目前正在使用无需刷新页面或单击按钮即可工作的 JS/AJAX 函数。我在回显该值时遇到了一些问题。例如,如果我更改此行$email = $_POST['name'];,它会完美运行,但如果我使用电子邮件的实际值,$email = $_POST['email'];则它不起作用。我是 JS 和 php 的新手。

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

<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>');

    }           
}
?>
4

2 回答 2

1

好吧,您明确指定了一个参数“名称”来保存电子邮件地址。没有您特别指定的参数“电子邮件”。在您的 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;
于 2012-07-28T06:15:16.387 回答
0

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

于 2012-07-28T06:15:19.263 回答