#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.