我遇到的问题是使用简单的ajax邮件脚本。
我这样做得很好:
php片段:
if(mail($to,$subject,$message,$headers)){
echo "success";
}
回到这里处理的ajax代码:
if($.trim(data) == "success"){
// do the success stuff
}else{
// doo the fail stuff
}
我担心的是,在jquery代码中,所有版本的资源管理器都不支持“trim”。 所以我宁愿让php返回字符串“success”已经修剪过。 但是改变你看到的内容并不像我预期的那样工作,并在ajax中运行失败功能..?
修改php:
if(mail($to,$subject,$message,$headers)){
$success = trim("success");
echo $success;
}
修改Ajax:
if(data == "success"){
// do success stuff does not happen anymore
}else{
// now it always does fail stuff, so comparison is always false
}
为什么要在php中修剪而不是让我失望的ajax ...?
答案 0 :(得分:0)
您的问题不在于字符串“success”。修剪只是从字符串的开头和结尾删除空格和白字符(换行符等)。并且在“成功”中没有这样的东西,所以它什么也没做。但是,如果在JavaScript端修改 ,则PHP必须生成一些空格字符,因此它会出现在响应中。但这不是你发布的代码,工作“成功”没有问题。您必须浏览代码并找到换行符/空格/白色字符的来源。
通常,问题在于使用Unicode BOM标记(在编辑器中查找和打开PHP文件,可以显示它们是否存在)或PHP文件末尾的换行符(删除它们)。 / p>
答案 1 :(得分:0)
如果使用jquery.ajax,则可以指定成功/完成/失败回调函数。您的jquery调用可以是执行邮件功能的函数,然后返回true或false。然后,您可以检查成功函数中的返回值。
答案 2 :(得分:0)
试试吧...... 在ajax
$('#err_register').html("Data:"+data+"Display");
var resultData=jQuery.trim(data);
if(resultData == "success"){
// do success stuff does not happen anymore
}else{
// now it always does fail stuff, so comparison is always false
}