Javascript逻辑失败?

时间:2011-08-02 06:43:06

标签: javascript jquery

我真的很困惑这个。我正在尝试做一个简单的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);
    }
  });
}

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

你的php很可能在单词“true”之后输出其他不可见的内容,如换行符。要么确保在输出“true”后立即调用die();exit();,并执行其他所需的操作,或者确保在{{1}之前PHP编辑器中没有换行符在<?php之后。

您还可以通过尝试?>

之类的内容来检查字符串是否以“true”开头而不是等于“true”