2010-10-09 35 views
2

这可能会带点有趣,甚至不知道如何开始标题。这可能是由于长时间的工作或我只是做错了事情。

我有一个文件,说comment.php,其中包含了类似于:

var params = $('form#myform').serialize(); 
$.get("/ajax/file.php?"+params, function(data){ 
    if (data == 'error') { 
     $('#message').html('Error'); 
    } else if (data == 'success') { 
     $('#message').html('Success'); 
    } 
}); 

我用萤火检查它,一切都很好,没有JS错误,该文件被调用,并返回要么“错误“,”成功“,但仍然在ajax调用数据与服务器响应不匹配。后来我改变

if (data == 'error') { 
    $('#message').html('Error'); 
} else if (data == 'success') { 
    $('#message').html('Success'); 
} 

if (trim(data) == 'error') { 
    $('#message').html('Error'); 
} else if (data == 'success') { 
    $('#message').html('Success'); 
} 

其中装饰()是我写的前或后的字符串,去除任何空间的功能。我也试图智慧的文件被称为呼应数字和使用jQuery检查,如:

if (data == 1) { 
    $('#message').html('Error'); 
} else if (data == 'success') { 
    $('#message').html('Success'); 
} 

没有结果。如果我只警报(数据)一切看起来很好。这两个文件都在同一个域中。我的代码与示例中的完全相同,只是我有更多的if/else条件,其中一个条件应该总是匹配(如果我查看firebug,则会发生这种情况)。我也尝试使用开关声明没有结果。

我一直在使用这种方法一段时间,从来没有任何问题。想法?

+0

我会尝试_alert(typeof数据)_来查看类型(并可能指定jquery _dataType_参数)。另外,请注意字符的大小写(上/下)。 – 2010-10-09 07:18:18

+0

对不起,刚看到这个,在这附近有新:)感谢您的帮助,请牢记这一点! – Claudiu 2010-10-09 07:40:14

回答

2

.get()回调回调使用3个参数:

  1. 数据
  2. 状态
  3. 了XMLHttpRequest

所以,你的方法应该工作。确保你注意大小写,标点符号和空格。

我会尝试,并获得约data更多信息以查明问题:

var params = $('form#myform').serialize(); 
$.get("/ajax/file.php?"+params, function(data){  
     alert("Type: " + typeof.data + 
       "\nContents: ==>" + data + "<==" + 
       "\nTrim: ==>" + $.trim(data) + "<=="); // get more info 
}); 

注意,jQuery有一个$.trim()功能

+0

我不认为它真的回答了为什么比较失败的问题:_“如果我只警告(数据)一切看起来很好。”_ – 2010-10-09 07:20:44

+0

感谢您的提示,但正如Nikkita所说,这不是我的问题。我打电话的文件实际上是一个字符串,可以是任何'email','name','message'等。当我在回调函数中调用alert(data)时,它确实会说'email','name'或其他任何东西,但是它会在比较时失败,就像if(data =='email')alert('email');并感谢$ .trim()函数提示:) – Claudiu 2010-10-09 07:24:57

+0

@Claudiu - 这很奇怪。我会尝试了解更多关于'data'的信息。只需用各种信息提醒它,这应该让你明白为什么比赛不起作用。你确定你的拼写和大小写正确吗? – 2010-10-09 07:33:14

0

您不必追加系列化数据到这样的查询字符串。 $ .get()将接受三个参数,其中一个是序列化(查询字符串)版本的数据或散列。但是,这不是你在这里的原因。

数据就是无论打印出哪个php页面。您是否真的从该页面打印出“错误”或“成功”一词?如果没有,那么你正在尝试做什么不会工作。

成功回调有三个参数:data,textStatus(response)和xhr。如何:

$.get("/ajax/file.php", $("#myform").serialize(), function (data, status) { 
    if (status == 'error') { 
     $('#message').html('Error'); 
    } 
    else if (status == 'success') { 
     $('#message').html('Success'); 
    } 
}); 
+0

你知道你基本上告诉我和彼得一样的东西,对吧?尽管如此,感谢您提供参数的帮助,但我唯一的解决方案是使用$ .get('file.php',{key:value} .... – Claudiu 2010-10-09 07:32:10

+0

对不起,我们在同一时间发布。意识到有一个信息重叠,但我认为我提到的其他参数是非常相关的(我有这之前他编辑:))。 – 2010-10-09 07:52:23