jquery Ajax statusCode意外行为

时间:2016-12-11 01:34:26

标签: jquery ajax

  $.get('/users/test/' + username, {
    statusCode: {
      409: () => {
        valid = false;
        alert(username + ' is unavailable');
      },
      200: () => {
        valid = true;
      }
    }
  });

在我的服务器上,我应该看到:

"GET /users/test/asdf HTTP/1.0" 200 0

但我发现jquery乐于附加一些愚蠢的查询字符串:

"GET /users/test/asdf?statusCode%5B200%5D=&statusCode%5B409%5D= HTTP/1.0" 200 0

Jquery回来了200但409代码仍在运行。发生了什么事?

1 个答案:

答案 0 :(得分:1)

您在第二个参数中传递一个对象,其中包含的内容似乎是基于状态代码的响应处理程序。

jQuery并没有这样做。 $.get()的第二个参数是可选的data参数,用于将数据传递给服务器。 jQuery序列化此数据并将其作为get请求中的查询字符串包含在内。

<小时/> 您可能希望使用该函数的另一种形式,该函数接受包含url的配置对象:

$.get({
    url: '/users/test/' + username, 
    statusCode: {
      409: () => {
        valid = false;
        alert(username + ' is unavailable');
      },
      200: () => {
        valid = true;
      }
    }
  });