我真的很困惑这个。我正在尝试做一个简单的ajax请求,我有php执行'echo“true”;'如果ajax请求成功,或返回包含错误的字符串(如果不是)。我在代码中的其他地方使用这种确切的技术,并按预期进行比较(msg!=“true”){//做某事}。我将在下面发布的第一个函数使用该方法,第二个函数不适用(我也在使用Firebug检查响应是否为“true”,并且我已经完成了console.log(typeof msg)以验证它是否为类型串)。
这按预期工作(php回显“true”,并执行show_step2()):
function step2_register() {
var values = $('.signup .txt').serialize();
$.ajax({
type: "POST",
url: base_url+"login/create_account",
data: values,
success: function(msg) {
if (msg != "true") {
$("#login_form.signup .error_container #error1").html(msg).css("visibility", "visible");
}
else {
show_step2();
}
},
error: function(error) {
alert(error);
}
});
}
这不起作用(php回应“true”,但js总是执行代码的slideDown()部分):
function register() {
var data = $("#login_form .input").serialize();
$.ajax({
type: "POST",
url: base_url+"login/register",
data: data,
success: function(msg) {
if (msg != "true") {
$("#login_form.signup #error2").html(msg).slideDown();
}
else {
show_success();
}
},
error: function(error) {
alert(error);
}
});
}
这里发生了什么?
答案 0 :(得分:2)
你的php很可能在单词“true”之后输出其他不可见的内容,如换行符。要么确保在输出“true”后立即调用die();
或exit();
,并执行其他所需的操作,或者确保在{{1}之前PHP编辑器中没有换行符在<?php
之后。
您还可以通过尝试?>