PHP 从 AJAX 帖子中获取数据并过滤它
Posted
技术标签:
【中文标题】PHP 从 AJAX 帖子中获取数据并过滤它【英文标题】:PHP get data from AJAX post and filter it 【发布时间】:2018-04-25 10:14:10 【问题描述】:我有一个我想与服务器通信的表单抛出一个 AJAX 帖子。 我所做的查询说这是查询错误,但我没有看到问题。我尝试了不同的 AJAX 代码,但似乎帖子有效,因为它通过了 if($_POST)。
$('#submit').click(function(e)
var url = "handler/dForm.php"; // the script where you handle the form input.
$.ajax(
type: "POST",
url: url,
contentType: 'application/json; charset=utf-8',
data: $("#idForm").serialize(), // serializes the form's elements.
success: function(data)
console.log(data); // show response from the php script.
,
error: function(xhr,textStatus,err)
console.log("readyState: " + xhr.readyState);
console.log("responseText: "+ xhr.responseText);
console.log("status: " + xhr.status);
console.log("text status: " + textStatus);
console.log("error: " + err);
);
e.preventDefault(); // avoid to execute the actual submit of the form.
);
服务器部分
require_once 'connect.php';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$subject = isset($_POST['Subject']) ? $_POST['Subject'] : '';
$message = isset($_POST['Message']) ? $_POST['Message'] : '';
$email = isset($_POST['Email']) ? $_POST['Email'] : '';
if (isset($_POST))
$email = $DBcon->real_escape_string($email);
$message = $DBcon->real_escape_string($message);
$subject = $DBcon->real_escape_string($subject);
$name = $DBcon->real_escape_string($name);
$query = "INSERT INTO customer(name,messaje,subject,email) VALUES('$name','$message','$subject','$email')";
if ($DBcon->query($query))
$msg = "<div class='alert alert-success'>
<span class='glyphicon glyphicon-info-sign'></span> successfully registered !
</div>";
else
$msg = "<div class='alert alert-danger'>
<span class='glyphicon glyphicon-info-sign'></span> error while registering !
</div>";
echo $msg;
$DBcon->close();
else
echo "err";
html 表单:
<form id="idForm">
<input type="text" class="col-md-6 col-xs-12 name" name='name' placeholder='Nume *'/>
<input type="text" class="col-md-6 col-xs-12 Email" name='Email' placeholder='Email *'/>
<input type="text" class="col-md-12 col-xs-12 Subject" name='Subject' placeholder='Subiect'/>
<textarea type="text" class="col-md-12 col-xs-12 Message" name='Message' placeholder='Mesaj *'></textarea>
<div class="cBtn col-xs-12">
<ul>
<li class="clear"><a href="javascript:void(0)"><i class="fa fa-times"></i>Sterge campurile</a></li>
<li class="send"><a href="javascript:void(0)" id="submit"><i class="fa fa-share"></i>Trimite</a>
</li>
</ul>
</div>
</form>
【问题讨论】:
您收到的确切错误是什么?如果不知道错误是什么,将很难提供帮助。 你是说你的代码在最底部的else语句中执行echo "err";
?返回 'err' 到前端
如果你把它改成$msg = "Error description: " . mysqli_error($DBcon);
,你会得到什么?
您可以显示表单的 html 吗?
您可以尝试从您的 ajax 中删除 contentType: 'application/json; charset=utf-8',
吗?
【参考方案1】:
我看到的第一个问题是if (isset($_POST))
它始终是TRUE
。您必须检查是否设置了特定字段,即。 if (isset($_POST['name']))
.
第二个是那一行:
$query = "INSERT INTO customer(name,messaje,subject,email) VALUES('$name','$message','$subject','$email')";
我认为您打错了 message 列。你有消息。
如果query()
返回 FALSE,请使用echo $DBcon->error;
作为调试提示。
【讨论】:
谢谢,SyntaxError: Unexpected token S in JSON at position 0 怎么样?real_escape_string 是否足以检查输入? 从 ajax 请求中删除contentType: 'application/json; charset=utf-8',
。关于 real_escape_tring 检查其他问题,例如:***.com/questions/110575/… 或 ***.com/questions/5741187/…以上是关于PHP 从 AJAX 帖子中获取数据并过滤它的主要内容,如果未能解决你的问题,请参考以下文章