1

我有以下 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: Unexpected token <

;(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,这就是我想要的。

这是该页面的链接。这是 test.cfm 的链接

4

2 回答 2

2

这个问题与您的 JavaScript 代码本身无关……它与您在服务器端所做的事情有关。如果您使用浏览器工具,您将看到以下响应:

<br> <br>
Unsupported Operation. Check application log for more details.
<br> <br>

解析器错误是针对返回的数据,而不是您的代码。

这种情况下的 URL 是http://www.phillipsenn.com/CFIDE/componentutils/cfcexplorer.cfc?method=getcfcinhtml&name=Matrix.CRUD.jqm.ajaxEnabled.ajaxEnabled&path=/Matrix/CRUD/jqm/ajaxEnabled/ajaxEnabled.cfc

于 2013-03-24T19:27:38.373 回答
2

您在 AJAX 调用中指定了 CFC,但没有指定要调用的方法。因此 CF 将请求解释为查看该 CFC 的 API 文档的请求,这就是它返回给浏览器的内容。所以 AJAX 调用接收的是标记,而不是 JSON。

此外,将来:当您说您遇到错误并且您正在处理多个系统(例如:CF 和 JS)时,请确保说明哪个系统给您错误。这使我们不必猜测。

于 2013-03-24T19:50:58.893 回答