Ошибка Lucee/AJAX/CFARGUMENT

Я упираюсь в стену с проблемой, и, вероятно, прошло больше часов, чем я хочу признать, отслеживая эту вещь.

В частности, у меня есть вызов jQuery AJAX, который отправляет некоторые данные в .cfc. Я вызываю метод и передаю некоторые аргументы, запускаю несколько запросов к базе данных, а затем ничего не возвращается. Затем я использую метод успеха функции AJAX, чтобы продолжить.

Я разработал его на сервере ColdFusion 11, и он прекрасно работает. Однако при моем недавнем переходе на сервер Lucee у меня возникают всевозможные проблемы с этим.

Сначала я заметил, что методы успеха не вызывались. Однако Firebug сообщает о 200 OK на вызове. Поэтому я проверил дальше, и все запросы к базам данных выполняются в рамках метода. Кроме того, журналы Lucee также выглядят чистыми и подтверждают, что запросы к базе данных выполнялись успешно. Так что все в порядке (из того, что я знаю, чтобы проверить). Я сделал основы и попробовал разные машины и разные браузеры, если это было специфично, но ничего не изменилось.

Я заметил, что Firefox Inspect Element выдавал ошибку «элемент не найден», и при дальнейшей проверке он возвращал, что аргументы, которые я отправлял в cfc, были неопределенными. Это заставило меня копнуть немного дальше, и я заметил, что он возвращает эту ошибку «Ошибка синтаксического анализа XML: элемент не найден». Все еще говорит, что возврат был 200 OK, но недостаточно хорошо, чтобы перейти к методу успеха вызова AJAX. .

Другие идеи, которые у меня были и которые я пробовал без реальных результатов, заключались в том, чтобы включить CORS, включая возвращаемый тип JSON (который устранил ошибку XML, но мало что сделал).

Любые идеи о том, что я могу попробовать, я начинаю задаваться вопросом, была ли испорчена вся установка Lucee, и мне нужно отказаться от нее и переустановить?

Спасибо за любую помощь или идеи, которые вы можете добавить.

Редактировать: Извиняюсь за то, что не прикрепляю код, поскольку он, похоже, был связан с настройкой сервера. Я наивно надеялся, что кто-нибудь скажет: "Да, вам нужно установить этот параметр и изменить этот файл, и вы' все хорошо!" Тогда мы бы все посмеялись над Tomcat.

Я предполагаю, что в первом комментарии говорится: «Покажите нам свой код!» что это не так. Итак, приняв подсказку, я собрал минимальный тестовый пример, который все еще подтверждает мою первоначальную проблему:

test.cfm

<!--- jQuery 2.1.4 --->
<script src="./jQuery-2.1.4.min.js"></script>

<script>
$(document).ready(function() {
    $.ajax({
        type: "post",
        url: "./test.cfc",
        data: {
            method: "test",
            var1: "var1",
            var2: "var2"
        },
        success: function(result) {
            alert('Hello Friend!');
        }
    });
});
</script>

test.cfc

<CFCOMPONENT>

    <!--- Test Function --->
    <CFFUNCTION NAME="test" ACCESS="remote">

        <CFARGUMENT NAME="var1" />
        <CFARGUMENT NAME="var2" />

        <CFOUTPUT>
            Var 1: #var1#<br />
            Var 2: #var2#
        </CFOUTPUT>

    </CFFUNCTION>
    <!--- End Test Function --->

</CFCOMPONENT>

И наверное важнее я на Lucee 4.5.1.023

Как и прежде, любая помощь всегда приветствуется.


person ashcanschool    schedule 28.09.2015    source источник
comment
Вы вернули свой код обратно в портативный репро-кейс, на который мы можем посмотреть? Если вы: вам вроде как нужно. Это также должно быть частью вашего общего устранения неполадок: выделите элементы вашего кода, которые не способствуют вашей проблеме: это лучше поможет определить, что действительно способствует вашей проблеме. Также лучше показать нам код, а не описывать, как он работает, и оставлять его для использования, чтобы угадать, что это может быть за код.   -  person Adam Cameron    schedule 28.09.2015


Ответы (1)


Так что я вздремнул и вернулся к этому вопросу. Я думаю, что это имеет очень мало общего с кодом или вкусом ColdFusion и больше связано с веб-сервером.

Я начал играть с различными доступными типами данных и начал видеть изменения в возвращаемом результате. Они не были видны сразу, так как им предшествовало значительное количество пробелов.

Так что частью этой проблемы является мой собственный плохой код. Обычно я использую dataType только тогда, когда мне нужно вернуть что-то конкретное, например. JSON, в противном случае я оставляю это, и будет сделано «разумное предположение» о том, что возвращается. Я предполагаю, что основное различие в моем сценарии заключается в использовании HTTP-сервера Apache (работает) по сравнению с Apache Tomcat (не работает), поэтому, когда я включил dataType: 'text', а затем широко использовал функцию jQuery .trim(), я смог добиться того, чего хотел.

Кроме того, в процессе я немного улучшил свой код.

Надеюсь, это поможет кому-то сходить с ума (по крайней мере, мне) в трудно диагностируемой проблеме, которая давала сбои полубесшумно.

person ashcanschool    schedule 28.09.2015