parsererror:SyntaxError:小于符号的意外标记

时间:2013-03-24 19:20:02

标签: javascript ajax coldfusion

我有以下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,这就是我想要的。

这是the link to the page。并here's the link to test.cfm

2 个答案:

答案 0 :(得分:2)

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

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

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

此案例中的网址为http://www.phillipsenn.com/CFIDE/componentutils/cfcexplorer.cfc?method=getcfcinhtml&name=Matrix.CRUD.jqm.ajaxEnabled.ajaxEnabled&path=/Matrix/CRUD/jqm/ajaxEnabled/ajaxEnabled.cfc

答案 1 :(得分:2)

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

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