2015-04-12 4 views
0

Я использую AJAX в моем приложении, и на веб-интерфейсе у меня естьres.success обратно FRONTEND из приложения Node.js/Экспресс

$.post('/post', $("#submitform").serialize()) 
       .done(function(res) { 
        //3. Receive the server response, no need to emit an event 
        if (res.success) { 
         //4. Show the updated text 
         console.log('success'); 
        } 
        else { 
         alert(res.error); 
        }}) 
       .fail(function(res) { 
        alert("Server Error: " + res.status + " " + res.statusText); 
       }); 



     return false; 
}); 

Я посылаю назад от моих Node.js/Экспресс приложение по маршруту:

res.send(statement); 

Однако res.success не получить срабатывает, и вместо этого я иду в alert(res.error) хотя процесс выполняет отлично на внутреннем интерфейсе.

Что я делаю неправильно? Должен ли я отправить что-то еще из бэкэнда моего приложения, например res.success?

Спасибо!

+0

Что вы 'res' объект, имеет он в' success' недвижимость? Возможно, это всего лишь данные с сервера. – Magador

+0

На самом деле да, это данные с сервера, так что лучший способ получить эти данные и посмотреть, были ли данные, указывающие на то, что все работает хорошо? –

+1

Does '.done()' означает, что запрос был успешным? Если да, вам не нужно 'res.success' – Magador

ответ

1

Поскольку вы используете ExpressJS с NodeJS на сервере, вы можете отправить код статуса ошибки с сервером, когда запрос HTTP не является правильным:

res.status(400).send('Bad Request') 

В клиентском сценарии, которые используют jQuery Deferred Object:

Таким образом, вы должны использовать в качестве кода:

$.post('/post', $("#submitform").serialize()) 
    .done(function(res) { 
     // Receive the successful server response 
     console.log('success'); 
    }) 
    .fail(function(res) { 
     // Receive the error server response 
     alert("Error: " + res.status + " " + res.statusText); 
    }); 

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

  • Нет связанных вопросов^_^