我有以下ColdFusion功能:
component {
url._cf_nodebug=true;
url.returnformat = "json";
url.queryformat = "column";
remote function Read(StateID) {
local.result = {};
local.result.MSG = "";
// local.result.QRY = QueryNew();
local.svc = new query();
local.svc.addParam(value=arguments.StateID,cfsqltype="cf_sql_integer");
local.svc.setSQL("SELECT *
FROM State WHERE StateID = ?");
local.svc.setName = "qry";
local.obj = local.svc.execute();
local.result.QRY = local.obj.getResult();
return local.result;
}
}
当我从test.cfm测试时,它可以正常工作:
<cfset qry = CreateObject("component","ajaxEnabled").Read(154)>
所以我认为问题是我如何将我的参数传递给$ .ajax方法。 当我调用它时,我得到:parsererror:SyntaxError:意外的标记&lt;
;(function($, window, undefined) {
var document = window.document;
$('#States').on('click','a',function() {
var local = {};
local.data = {};
local.data.StateID = $(this).data('stateid');
local.dataType = 'json';
local.context = $(this)[0];
local.Promise = $.ajax('ajaxEnabled.cfc',local);
local.Promise.fail(function(A,B,C) {
console.log(B + ': ' + C);
});
});
})(jQuery, window);
我可以在控制台中看到local.data.StateID = 153,这就是我想要的。
答案 0 :(得分:2)
问题与您的JavaScript代码本身无关......它与您在服务器端做的事情有关。如果您使用浏览器工具,您将看到此响应:
<br> <br>
Unsupported Operation. Check application log for more details.
<br> <br>
解析器错误用于返回的数据,而不是您的代码。
答案 1 :(得分:2)
您在AJAX调用中指定了CFC,但没有指定要调用的方法。因此,CF将该请求解释为查看该CFC的API文档,这就是它返回到浏览器的内容。所以AJAX调用正在接收标记,而不是JSON。
此外,将来:当你说你得到一个错误并且你正在处理多个系统(例如:CF和JS)时,请确保说明哪个系统给你错误。这节省了我们不得不猜测。