JQuery AJAX вызов пилонов с перебоями на идентичные запросы - PullRequest
0 голосов
/ 31 августа 2011

Я создаю вызов ajax так:

  var form = $("#form");
  $.ajax({url: "/url/create_web_registration?invite_token=abc",
          data: form.serialize(),
          type: "POST",
          dataType: "json",
          success: $.web_registration.index.registerSubmitSuccess,
          error: $.web_registration.index.registerSubmitError,
  });

Однако, когда я повторяю запрос с идентичными параметрами, я иногда получаю обратный вызов успеха, а иногда - обратный вызов ошибки. Когда вызывается обратный вызов ошибки, jqXHR.status всегда равен 0 при ошибке, но нет ничего описательного в statusText, responseText, textStatus или errorThrown.

Я сделал tcpdump для HTTP-запросов, и запрос выглядит так:

POST /shopkick/v1/user/create_web_registration?invite_token=abc HTTP/1.1
Host: [redacted]:5000
Connection: keep-alive
Referer: http://[redacted]:5000/wr2/abc?invite_token=&zip_code=94123&phone_number=%2B16785556982&facebook-form=
Content-Length: 169
Origin: http://[redacted]:5000
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

invite_token=&zip_code=94123&phone_number=%2B16785552982

Ответ выглядит так:

HTTP/1.0 200 OK
Server: PasteWSGIServer/0.5 Python/2.6.1
Date: Wed, 31 Aug 2011 05:34:10 GMT
Pragma: no-cache
Cache-Control: no-cache
Content-type: text/plain
Content-Length: 74

{"error_message": "Facebook account already registered", "success": false}

Я в недоумении, почему иногда это удается, а иногда - нет.

1 Ответ

0 голосов
/ 31 августа 2011

Проблема заключалась в том, что я использовал ajax для отправки формы. Когда я нажимал кнопку отправки, все работало нормально, но когда я нажимал клавишу ввода в поле ввода текста, возникали ошибки. Видимо, нажатие клавиши ввода в поле ввода приводило к тому, что форма отправлялась дважды. Исправление должно было установить onsubmit = "return false;" для формы, чтобы предотвратить двойную подачу.

...