Javascript逻辑失败?
这一点我真的很困惑。我正在尝试做一个简单的ajax请求,我让php执行'echo“true”;'如果ajax请求成功,则返回包含错误的字符串(如果未成功)。我在代码的其他地方使用了这种精确的技术,它会按预期进行比较(msg!=“true”){//do something}。下面我将发布的第一个函数使用该方法,第二个不使用(我正在使用Firebug检查响应是否为“true”,并且我已经完成了console.log(typeof msg)以验证它是否为string类型) 这正如预期的那样工作(php回显“true”,并执行show_step2()): 这不起作用(php响应“true”,但js总是执行代码的slideDown()部分):Javascript逻辑失败?,javascript,jquery,Javascript,Jquery,这一点我真的很困惑。我正在尝试做一个简单的ajax请求,我让php执行'echo“true”;'如果ajax请求成功,则返回包含错误的字符串(如果未成功)。我在代码的其他地方使用了这种精确的技术,它会按预期进行比较(msg!=“true”){//do something}。下面我将发布的第一个函数使用该方法,第二个不使用(我正在使用Firebug检查响应是否为“true”,并且我已经完成了console.log(typeof msg)以验证它是否为string类型) 这正如预期的那样工作(php
这是怎么回事?您的php可能会输出一些不可见的东西,比如“true”后面的换行符。要么确保调用
die()代码>或退出()在输出“true”(并执行您需要的所有其他操作)之后立即执行code>,或者在
之前确保PHP编辑器中没有换行符
您还可以通过尝试类似于msg的操作来检查字符串是否以“true”开头,而不是以“true”开头。substring(0,4)=“true”
检查返回消息的内容类型或将其设置为text/plain。执行此操作时,警报(“+msg+”)
检查是否有由PHP产生的空格,下划线可以帮助您查看msg
字符串前后的空格。如果找到空白,考虑使用<代码> .Times()/代码>()来删除它们。谢谢本,这帮助了很多。我在ajax函数中加载的模型中,在结束php标记(?>)之后,我将其追溯到一个额外的行。看来我需要提高我的调试技能;)所有的推荐都很好,不过如果任何垃圾角色在true之前,子字符串就没什么用处了。@Ben true,我想如果它在Firebug之前,他更可能在Firebug中注意到它。虽然我在之前说过要检查,但你是对的。在PHP中加载的模型中,在结束PHP标记后有一个空行。
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);
}
});
}
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);
}
});
}