[英]PHP adding unwanted line break to ajax result
为什么 PHP 会在我的简单 AJAX 结果中添加换行符? 这再简单不过了。 我错过了什么吗?
这是我的JS:
$(document).ready(function() {
$('#inputEmail').change(function(){
// Check to see if email exists
var email = $('#inputEmail').val();
//alert(email);
$.ajax({
url : "php/checkUserEmail.php",
type: "POST",
dataType: "text",
data: {email: email},
success: function(data){
alert(data);
if(data === "exists"){
alert(data);
}
},
error: function (jqXHR, textStatus, errorThrown)
{
alert("ajax error");
}
});
});
});
这是我的php:
<?php
include_once("db_connect.php");
// Catch results sent via $.post and assigns them to php variables.
$email = $_POST['email'];
// Check to see if email exists
$sql = "SELECT * FROM users WHERE email = '$email'";
$conn->prepare($sql);
$result = $conn->query($sql);
$rowCnt = $result->num_rows;
if($rowCnt == 0){
echo trim('new');
}else{
echo trim('exists');
}
无论出于何种原因,我的结果数据字符串作为 /r/nexists 返回,而不是仅仅存在,因此永远不会进入我的 if 块,即使我只使用 == 来评估条件。 我尝试添加 trim() 函数,如您所见,没有结果。 非常感谢您的帮助,因为这花了我几个小时的时间来处理一个愚蠢的 if 条件。
检查php问号之后或之前是否有“空”空格,这些换行符也表示为响应的一部分。
I mean here
<?php?>
And here
我找到了一个解决方案,但我仍然不喜欢或不明白发生了什么。 您应该能够为结果返回一个简单的字符串。 无论如何,我所做的只是将从数据库返回的行数回显到我的 ajax 成功函数。 然后我检查了客户端上的结果是否 > 0,最后在我的 IF 块中。 这是我所做的:
JS:
$(document).ready(function() {
$('#inputEmail').change(function(){
// Check to see if email exists
var email = $('#inputEmail').val();
//alert(email);
$.ajax({
url : "php/checkUserEmail.php",
type: "POST",
dataType: "text",
data: {email: email},
success: function(data){
console.log(data);
if(data > 0){
console.log("HURRAY! I'm in my IF");
}
},
error: function (jqXHR, textStatus, errorThrown)
{
alert("ajax error");
}
});
});
});
这是PHP:
// Catch results sent via $.post and assigns them to php variables.
$email = $_POST['email'];
// Check to see if email exists
$sql = "SELECT * FROM users WHERE email = '$email'";
$conn->prepare($sql);
$result = $conn->query($sql);
$rowCnt = $result->num_rows;
echo $rowCnt;
?>
这有效,实际上可能更优雅,但您应该能够毫无问题地返回字符串。
约翰
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.