Javascript $.post返回正确的数据,并在开头添加一个换行符
我在login.php上有一个简单的ajax调用,它执行基本的验证 如果用户键入有效用户名,则checkuser.php通过echo语句返回“valid username” 现在,当我从post请求中警告数据元素时,它显示“validusername”。但是当使用“validusername”测试相等性时,它会转到if语句的false部分,并发出“fail”警报 checkuser.phpJavascript $.post返回正确的数据,并在开头添加一个换行符,javascript,php,jquery,ajax,validation,Javascript,Php,Jquery,Ajax,Validation,我在login.php上有一个简单的ajax调用,它执行基本的验证 如果用户键入有效用户名,则checkuser.php通过echo语句返回“valid username” 现在,当我从post请求中警告数据元素时,它显示“validusername”。但是当使用“validusername”测试相等性时,它会转到if语句的false部分,并发出“fail”警报 checkuser.php include_once 'functions.php'; echo "Valid username";
include_once 'functions.php';
echo "Valid username";
login.php最小值
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
$.post('checkuser.php', {user: 'validUser'},function(data) {
$.trim(data);
alert(data);
if (data=='Valid username')
alert('success');
else
alert('fail');
});
});
</script>
</head>
</html>
我使用了jQuery trim函数,但没有用。知道为什么会这样吗
因此,事实证明include语句在$.post调用中预先添加了一个\n,因为文件末尾有空行。通过删除functions.php文件中?>closing标记后的空行,问题得以解决 如果您使用的是google chrome,则在使用开发者工具时,可以在“网络”选项卡下查看响应 但是,我建议您使用result参数检查调用是否成功
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
$.post('checkuser.php', {user: 'validUser'},function(data, result) {
alert(data);
if(result=='success')
alert('success');
else
alert('fail');
});
});
</script>
</head>
</html>
附言:你的原始代码在我这边起作用。我唯一添加的是checkuser.php文件中的php标记至于php代码返回数据的原因,我们需要查看代码 然而,关于为什么$.trim不起作用,值得注意的是,jQuery$.trim不会删除换行符。相反,您可以使用Regex。这将删除所有换行符: textvar=textvar.replace/\r\n |\n |\r/gm
尽管上述Chris的实现似乎是您寻找的更好的选择。您的PHP脚本末尾可能有空行。在if语句之前,通过说console.logdata,将输出记录到控制台中,进行一些调试;并找出它包含的属性。然后根据prop值进行验证似乎数据在开始时带有\n字符。因此,请修复PHP,这样您就不会发送代码,因为您的代码在我这边有效,我添加的唯一内容是checkuser.PHP中的PHP标记