Я использую ColdFusion 9 и jQuery.Я использую CFAJAXPROXY.
У меня проблемы с доступом к данным, возвращенным в объект jQuery.
Это часть моего кода jQuery:
var jro = new jsApp();
NewUser = jro.addUser(NewEmail);
Методв CFC есть addUser.Я передаю адрес электронной почты (NewEmail) и получаю обратно UserID нового пользователя.
Этот запрос в CFC работает просто отлично:
<cfquery name="GetUserID">
SELECT MAX(UserID) as MaxID
FROM Users
</cfquery>
Когда я жестко кодирую значение, подобное этому, У меня нет проблемы:
<cfset NewUser = 10>
<cfreturn NewUser>
Когда я пытаюсь использовать такую динамическую переменную, я получаю сообщение об ошибке JSON:
<cfset NewUser = GetUserID.MaxID>
<cfreturn NewUser>
Эта ошибка возникает вCFC.Жесткое кодирование возвращаемой переменной работает, но возврат единственного целого числа из запроса НЕ работает.
Как вернуть одно целое число из запроса?Почему это создает проблему?
Вот как называется CFC.
$("#AddUserSave").click(function() {
NewEmail = $("#NewEmail").attr("value");
var jro = new jsApp();
UserID = jro.addUser(NewEmail);
$("#UserDiv").load("GlobalAdmin/EditUser.cfm?UserID="+UserID);
});
Опять же, CFC отказывается возвращать UserID из базы данных, но с радостью возвращает жестко закодированный номер.
Хорошо, в моем CFC это работает:
<cfset NewUser = GetUserID.UserID>
<cfset NewUser = 1>
<cfreturn NewUser>
Но это НЕ работает:
<cfset NewUser = GetUserID.UserID>
<cfreturn NewUser>
Firebug говорит:
parseJSON throw new SyntaxError("parseJSON");
cfajax.js (line 803)
Хорошо, когда я обращаюсь к этому методу через браузер, он показывает возвращаемое целое число.
<!--- GET MAX USER --->
<cffunction name="getMaxUser" access="remote" returnformat="plain" returntype="any">
<cfquery name="GetUserID">
SELECT MAX(UserID) AS MaxID
FROM Users
</cfquery>
<cfreturn createObject( 'java', 'java.lang.Integer' ).init( javaCast( 'int', GetUserID.MaxID ) ) />
</cffunction>
Когда я просматриваю исходный код страницы, максимальное значение равно 1 (одно / целое число).
CFC вызывается в JavaScript:
var jro = new jsApp();
jro.getMaxUser();
Точную ошибку, которую я получаю, можно увидеть на этом снимке экрана:
http://evikjames.com/IMAGEs/parsejson.png
И вотизображение моих ХФУ.
http://evikjames.com/images/CFC.png
Вот изображение URL, созданного JavaScript для доступа к методу:
http://www.evikjames.com/images/error-2.png
+++++++++++++++++++++++++++++++++++++++++++++++++++++ ОТВЕТ
JavaScript должен создать запрос, который устанавливает формат возврата равным обычному.Я думаю, что его тип возвращаемого значения по умолчанию - JSON.ХФУ душит JSON, который он сам создал.
var jro = new jsApp();
jro.setReturnFormat('plain');
UserID = jro.getMaxUser();
Снимаю шляпу перед Чарли, чтобы он все понял.Я всегда благодарен.