jquery getJSON вызов cfc работает на тестовом сервере, но не работает - PullRequest
1 голос
/ 29 июня 2011

У меня есть страница, которая использует getJSON для доступа к cfc в том же домене. Все отлично работает на сервере разработки, но не на живом. Другие jquery выполняются нормально, только не вызов .getJSON. Я также попробовал несколько примеров со всего Интернета и использовал ajax вместо getJSON, но результат всегда одинаков - отлично на тесте, а не вживую.

Вот код, который я сейчас использую для тестирования, это сокращенная версия примера на http://www.christopherchin.com/blog/index.cfm/2010/3/25/HELP-CFCjqueryJSON.


index.cfm:

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
chkUsernameUnique = function(theUsername){
    $.getJSON("/jsonTest/mycfc.cfc", {
    method: 'chkUsername',
    Username: theUsername,
    returnformat: 'json'
    }, function(isUsernameUnique){
        $("#theErrorDivID").html(isUsernameUnique);
    });
};
</script>

<input type="text" name="username" id="username" onchange="chkUsernameUnique(this.value);" />

<div id="theErrorDivID"></div>

mycfc.cfc:

<cfcomponent>
<cffunction name="chkUsername" access="remote" returnformat="json" output="false">
    <cfargument name="Username" required="true">

    <cfset thisRecordCount=4>

    <cfreturn thisRecordCount>
</cffunction>
</cfcomponent>

Не обращайте внимания на тот факт, что он не делает ничего полезного, это чисто для тестирования. На тестовом сервере он делает то, что должен, и отображает 4, если я что-то наберу в поле. На сервере печени, это фактически не выдает ошибку, и браузер показывает, что JavaScript проверяет, но ничего не происходит. На данный момент я думаю, что это может быть настройка на сервере или в администраторе ColdFusion, а не какое-либо отношение к коду, но я даже не уверен, с чего начать. Любая помощь будет очень, очень ценится.


Обновление: теперь я вижу в firebug, что на тестовом сервере ответ - 4.0, а на живом сервере - //4.0. Что означают лишние косые черты?

Ответы [ 2 ]

4 голосов
/ 29 июня 2011

Скорее всего, на живом сервере включена функция secureJson в ColdFusion. Это обеспечивает безопасность вывода JSON путем размещения по умолчанию двух косых черт перед JSON. Другие источники, пытающиеся получить доступ к JSON, увидят только комментарий Javascript (//), в то время как ColdFusion, зная, что функция включена, удалит косую черту и затем будет работать с ней.

Вы можете отключить его в вашем Application.cfc (this.secureJson = false), Application.cfm (<cfapplication ... secureJson="false" />) или на уровне функций в теге cffunction (<cffunction ... secureJson="false">). В Администраторе CF также есть настройка для всего сервера. Скорее всего, это отключено в тестовой среде, но включено в производственной среде.

0 голосов
/ 29 июня 2011

На вашем производственном CF-сервере включена функция secureJSON. Вместо того, чтобы отключить его в производственной среде, я бы обновил свой сервер разработки, чтобы он соответствовал ему, и встроил его в свой код. Немного дополнительной безопасности никогда никому не повредит, ИМО.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...