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:予期しないトークン<

;(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 に答える