Вы отправляете строку запроса или форму сообщения? Обычно логин это POST, а не GET. Но все равно.
Обычно мне нравится публиковать более структурированный ответ, чтобы у вас была возможность вернуть дополнительную информацию пользователю, например, сообщение об ошибке, но простой пример true / false приведен ниже. Вы можете просто дать методу атрибут удаленного доступа, например так:
<cfcomponent name="Login">
<cfset variables.dsn = "mydb" />
<cffunction name="tryLogin" access="remote" output="false" returntype="boolean">
<cfargument name="username" type="string" required="true"/>
<cfargument name="password" type="string" required="true"/>
<cfset var loginQuery = "" />
<cfquery name="loginQuery" datasource="#variables.dsn#">
SELECT *
FROM users
WHERE
username = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.username#"/>
AND
password = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.password#"/>
</cfquery>
<cfif loginQuery.recordcount>
<cfreturn true />
<cfelse>
<cfreturn false />
</cfif>
</cffunction>
</cfcomponent>
Теперь, когда у вас есть CFC, ваш базовый скрипт должен работать просто отлично, с некоторыми изменениями:
function AttemptLogin(userName, password)
{
$.ajax({
url: 'login.cfc',
data: {method: 'tryLogin', username: userName, password: password},
success: function(data) {
if (data == true) { alert('true!');} else { alert('false!');}
}
});
};
Как уже упоминалось в другом ответе, если вы возвращаете сложный тип данных, такой как структура или массив, вам нужно указать returnFormat 'json' и изменить аргумент данных следующим образом:
data: {method: 'tryLogin', returnFormat: 'json', username: userName, password: password}