2014-10-13 2 views
1

Я делаю сообщение формы AJAX в jQuery. Однако, когда я возвращаю код ошибки с моего сервера Python, он читается как успех, а не как ошибка. Мой код ниже. Я пишу на питоне. Поэтому приносим извинения, если я совершаю очевидные ошибки.возвращение ошибки ajax из python в jquery

Jquery:

$.ajax({ 

       type:"post", 
       url: "/newform", 
       data:$('#my-form').serialize(), 
       success: function(msg){ 

        alert(msg); 


       }, 
       error: function(msg){ 

        alert(msg); 
       } 
      }); 

код Python:

def post(self): 

    email = self.get_secure_cookie("user") 
    id_name = self.get_argument('id1', None) 

    try: 
     credentials = Credentials(email=email, id_name=id_name) 
     credentials.save() 

    except Exception, e: 
     print '%s' % str(e) 
     msg = 'Authorization Failed. Please check if the credentials are correct' 
     status = "error" 

    else: 
     msg = 'Connected' 
     status = "success" 

    print 'status: %s' % status 
    self.write({"status": status, "msg": msg}) 
+0

«Успех» означает только то, что сервер ответил с кодом HTTP Status 200. Ваш JavaScript не имеет ни малейшего представления, если ошибка произошла на стороне сервера. – Brandon

+0

Да, делал ошибку noob. Спасибо за объяснение. – ubh

+0

Не беспокойтесь. Рад, что ты это понял. – Brandon

ответ

3

Ваш код по-прежнему возвращает успешный ответ HTTP 200, но с «статусом»: «ошибка» в нем.

Так что ваш Javascript может выглядеть следующим образом:

$.ajax({ 
      type:"post", 
      url: "/newform", 
      data:$('#my-form').serialize(), 
      success: function(msg){ 
       if (msg.status == "success") { 
       //handle success here 
       } else { 
       //handle error 
       } 
      }, 
      error: function(msg){ 
      //handle server error, such as HTTP 404, 500 
      } 
     }); 
+0

Спасибо за разъяснение. Это сработало! – ubh

1

На техническом уровне нет erros. На функциональном уровне возникает ошибка. Таким образом, вызов ajax выполняется без ошибок. Вы должны проверить в обработчике успеха поле статуса, которое вы предоставляете для ошибки или успеха.

+1

Спасибо за указание ошибки. – ubh

Смежные вопросы