想请求帮助。我遇到了关于获取我想要的正确数据的问题。也许我的代码中缺少某些东西。我总是无效。
我在控制台选项卡上没有收到任何错误。
这是我的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;
}
});
});
});
感谢您的回答!
答案 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代码中的一个主要缺陷。您正在将data: 'email='+emailval
传递给请求。对于GET来说这很好(很好 - 可能不是,因为你不是对你的消息进行URL编码),但是我怀疑这个帖子,jQuery可以从email=Some arbitrary text
中得到一些像样的JSON。至少它会使你的JS容易受到注射。有关如何使用jQuery将JSON发送到Web服务的答案,请参阅here。
$_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'}
等。