如何使用PHP捕获Ajax发送的数据

时间:2017-02-06 09:52:17

标签: php ajax

想请求帮助。我遇到了关于获取我想要的正确数据的问题。也许我的代码中缺少某些东西。我总是无效。

我在控制台选项卡上没有收到任何错误。

这是我的ajax

wsadmin

也许你可以帮我修复PHP。还在学习一些东西。请详细说明一些细节。

这是我的PHP代码

$(document).ready(function() {
		$(".fsubmit").click(function() {    
			var emailval = $("#email").val().trim();
			
			$.ajax({
				url: '/test.php',
				type: 'POST',
				dataType: 'json',
				data: 'email='+emailval,
				success: function(data) {	
					console.log(data);
					return false;
				}
			});
		});
	});

感谢您的回答!

3 个答案:

答案 0 :(得分:0)

试试这个:

$(document).ready(function() {
    $(".fsubmit").click(function() {    
        var emailval = $("#email").val().trim();

        $.ajax({
            url: '/test.php',
            type: 'POST',
            dataType: 'json',
            data: {email:emailval},
            success: function(data) {   
                console.log(data);
                return false;
            }
        });
    });
});

然后在php:

<?php 

    $date = new DateTime();
    $datelog = $date->format('d.m.Y h:i:s');
    $data = isset($_POST['email'])?$_POST['email']:'';

    $message = '[' . $datelog . '] - email: ' . json_encode($data);

    echo($message);
?>

您应始终检查已发布的元素isset是否为<{1}}。

答案 1 :(得分:0)

不允许发表评论。这是对穆罕默德答案的一点编辑。对于空白表单字段,isset()返回true。请改用empty()

这在我的系统中运行..

ajax call

    $(document).ready(function(e) {
        $(".fsubmit").click(function() {  
            e.preventDefault();
            console.log("whooowww");
            var emailval = $("#email").val().trim();

            $.ajax({
                url: '/arrayfilter.php',
                type: 'POST',
                dataType: 'json',
                data: 'email='+emailval,
                success: function(data) {   
                    console.log(data);
                    return false;
                }
            });
        });
    });

html表单

<form>
    <input type="text" name="user-input" id="email"/>
    <button type="submit">Send</button>
</form>

PHP

if($_POST){
    if(!empty($_POST['email']))
        echo "$_POST[email]";
    }
}

答案 2 :(得分:0)

JS

我可以看到 - 至少 - 你的JS代码中的一个主要缺陷。您正在将data: 'email='+emailval传递给请求。对于GET来说这很好(很好 - 可能不是,因为你不是对你的消息进行URL编码),但是我怀疑这个帖子,jQuery可以从email=Some arbitrary text中得到一些像样的JSON。至少它会使你的JS容易受到注射。有关如何使用jQuery将JSON发送到Web服务的答案,请参阅here

PHP

$_POST['data'](如果这是正确的)将包含字符串。但根据PHP documentation

  

json_encode - 返回值

的JSON表示

我认为这不是你想要做的。你有一个字符串,你可能想从你的JSON字符串中获取一个对象(实际上目前,我怀疑它实际上是你传递的JSON字符串)。您可以使用json_decode实现此目的,

  

json_decode - 解码JSON字符串

我建议使用以下PHP代码,将JSON解码为数组,然后输出email的值

$data = json_decode($_POST['data'], true);

$message = '[' . $datelog . '] - email: ' . $data["email"];

为此,$_POST['data']必须看起来像这样

{'email': 'Your message'}

等。