$ .get()AJAX调用无法处理服务器响应

时间:2010-10-09 07:08:58

标签: php jquery ajax get

这可能会有点搞笑,甚至不知道如何把头衔放在首位。这可能是由于长时间的工作或我只是做错了。

我有一个文件,比如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');
    }
});

我用firebug检查了一切,一切正常,没有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');
}

其中 trim()是我写的一个函数,删除字符串之前或之后的任何空格。我也尝试过将文件称为回显数字并使用jQuery进行检查:

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

没有结果。如果我只是警报(数据)一切看起来都很难。两个文件都在同一个域中。我的代码与示例完全相同,只是因为我有更多的if / else条件,其中一个应该总是匹配(如果我查看firebug就会这样)。我也尝试使用 switch 语句而没有结果。

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

2 个答案:

答案 0 :(得分:2)

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

  1. 数据
  2. 状态
  3. XMLHttpRequest
  4. 所以,你的方法应该有效。确保你注意大写,标点符号和空格。

    我会尝试获取有关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() 功能

答案 1 :(得分: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');
   }
});