代码之家  ›  专栏  ›  技术社区  ›  Claudiu

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

  •  2
  • Claudiu  · 技术社区  · 15 年前

    这可能有点搞笑,甚至不知道如何把标题放在第一位。可能是因为长时间的工作或者我做错了什么。

    我有一个文件,比如说注释.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错误,文件正在被调用并返回“error”或者“success”,但是仍然在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');
    }
    

    哪里 修剪()

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

    没有结果。如果我只是 一切看起来都很艰难。两个文件都在同一个域中。我的代码与示例中的代码完全相同,只是我有更多的if/else条件,其中一个条件应该始终匹配(如果我在firebug中查看的话,就会匹配)。我也试过用 没有结果的语句。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Peter Ajtai    15 年前

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

    1. 地位
    2. 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
    });
    

    $.trim() 功能

        2
  •  0
  •   Explosion Pills    15 年前

    您不必像那样将序列化数据追加到查询字符串中。$.get()将接受三个参数,其中一个是数据的序列化(查询字符串)版本或哈希。然而,这不是你来这里的原因。

    数据就是php页面打印出来的任何内容。你真的要从那一页打印出“错误”或“成功”这个词吗?如果没有,那么你要做的就是不起作用。

    success回调有三个参数: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');
       }
    });