Почему мой запрос json с ошибкой вместо успешного выполнения?

#ajax #json #coldfusion

#ajax #json #coldfusion

Вопрос:

Вот мой метод отладки, который переходит к блоку ошибок вместо блока успеха.

 function removerelationship(reference_related_id_var) {
            if ($('##relationships').attr('id') != undefined) {
                $.ajaxSetup({cache:false});
                $.ajax({
                    url: 'index.cfm?action=reference.confirmjson',
                    dataType: 'json',
                    data: {reference_id:reference_id_var, reference_related_id:reference_related_id_var},
                    success: function(){alert("I PASSED");},
                    error: function(){alert("I FAILED");}
                    });
  

Но это мой ответ от вызова reference.confirmjson:

 {"MESSAGE":"Are You Sure You Want To Remove The Relationship Between References 744094 and 1200?","CONFIRMED":true}
  

Есть ли какая-то причина, по которой это все равно приведет меня к блоку ошибок?

Спасибо.

Комментарии:

1. Это if ($('##relationships') опечатка? Это недопустимо.

2. Вы действительно видите этот ответ в Firebug или подобном инструменте? Вы уверены, что в вашем ответе нет начальных пробелов? Кроме того, почему вы передаете данные как в url свойство в виде строки запроса, так и в data свойство?

3. Я думаю, что он поместил JS внутри a <cfoutput> , поэтому ему нужно экранировать «#» с помощью «##»

4. Я не думаю, что вы предоставили достаточно информации, чтобы ответить на этот вопрос. На основе вашего «ответа» вызов AJAX правильно отправляется на сервер, принимается сервером, и сервер возвращает действительный ответ. Похоже, что код на стороне сервера ожидает от вас подтверждения. Возможно, вы неправильно используете API.

5. @dmackerman — да, это просто для того, чтобы избежать этого

Ответ №1:

Убедитесь, что у вас отключен вывод отладки для запроса AJAX. Я объясняю это немного лучше в http://orangexception.com/post/7308110027/remove-debug-output-from-ajax-requests-in-coldfusion

Комментарии:

1. Большое спасибо, это была проблема, и мне нравится, как вы справились с ней, по сравнению с тем, как я просто поместил ее в начало моего файла JSON.

2. Обязательно проверьте код github. Я изменил, где я делаю заголовки сейчас из-за запросов CFC.

Ответ №2:

Ошибка будет вызвана, если возвращается какой-либо статус, отличный от 200. Взгляните на ответ в Firebug или аналогичном инструменте. Если CF также выдает ошибку дальше по запросу, он вернет 500. Это может помочь вам определить, нужно ли проверять журнал приложений CF на наличие ошибки.

Редактировать: Кроме того, проверьте необработанный ответ. Firebug отлично справляется с удалением завершающей ошибки CF и просто показывает правильно отформатированный JSON, что может сбить с толку, если была выдана ошибка.

Комментарии:

1. Он выдает статус 200, что еще больше сбивает с толку. Интересно, может ли это быть из-за того, что у меня включена отладка CF? Необработанный ответ — это именно то, что я опубликовал выше в фигурных скобках, за которым следует вывод cfdebug.