代码之家  ›  专栏  ›  技术社区  ›  Mohamad

在CFFunction中返回JSON并将其附加到层会导致错误

  •  0
  • Mohamad  · 技术社区  · 15 年前

    <cffunction 
    name="fGameDetails"
    access="remote"
    returnType="any"
    returnformat="JSON"
    output="false"
    hint="This grabs game details for the games.cfm page">
        <!---Argument, which is the game ID--->
    <cfargument 
        name="gameID"
        type="numeric"
        required="true"
        hint="CFC will look for GameID and retrieve its details">
    <!---Local var--->
    <cfset var qGameDetails = "">
    <!---Database query--->
    <cfquery name="qGameDetails" datasource="#REQUEST.datasource#">
    SELECT
        titles.titleName AS tName,
        titles.titleBrief AS tBrief,
        games.gameID,
        games.titleID,
        games.releaseDate AS rDate,
        genres.genreName AS gName,
        platforms.platformAbbr AS pAbbr,
        platforms.platformName AS pName,
        creviews.cReviewScore AS rScore,
        ratings.ratingName AS rName
    FROM
        games
            Inner Join platforms ON platforms.platformID = games.platformID
            Inner Join titles ON titles.titleID = games.titleID
            Inner Join genres ON genres.genreID = games.genreID
            Inner Join creviews ON games.gameID = creviews.gameID
            Inner Join ratings ON ratings.ratingID = games.ratingID
    WHERE 
        (games.gameID = #ARGUMENTS.gameID#);
    </cfquery>
    <cfreturn qGameDetails>
    </cffunction>
    

    此函数返回以下JSON:

    {
        "COLUMNS": [
            "TNAME",
            "TBRIEF",
            "GAMEID",
            "TITLEID",
            "RDATE",
            "GNAME",
            "PABBR",
            "PNAME",
            "RSCORE",
            "RNAME"
        ],
        "DATA": [
            [
                "Dark Void",
                "Ancient gods known as 'The Watchers,' once banished from our world by superhuman Adepts, have returned with a vengeance.",
                154,
                54,
                "January, 19 2010 00:00:00",
                "Action & Adventure",
                "PS3",
                "Playstation 3",
                3.3,
                "14 Anos"
            ]
        ]
    }
    

    我遇到的问题是,每次尝试将JSON附加到层目录时,都会出现一个语法错误,上面写着“missing insertional”。这是我使用的JavaScript:

    $(document).ready(function() 
    {
        $('#catalog a[href]').each(function()
        {
            $(this).qtip( {
                content: {
                url: '/gamezilla/resources/components/viewgames.cfc?method=fGameDetails',
                data: { gameID: $(this).attr('href').match(/gameID=([0-9]+)$/)[1] },
                method: 'get'
            },
            api: {
                beforeContentUpdate: function(content) {
                var json = eval('(' + content + ')');
                content = $('<div />').append(
                    $('<h1 />', {
                        html: json.TNAME
                    }));
                return content;
                }
            },
            style: {
                width: 300,
                height: 300,
                padding: 0,
                name: 'light',
                tip: {
                    corner: 'leftMiddle',
                    size: {
                        x: 40,
                        y : 40
                    }
                }
            },
            position: {
                corner: {
                    target: 'rightMiddle',
                    tooltip: 'leftMiddle'
                }
            }
            });
        });
    });
    

    5 回复  |  直到 15 年前
        1
  •  1
  •   Russ S.    15 年前

    在关闭“position”括号之后,javascript的底部还有一个额外的括号。

        2
  •  1
  •   Peter Boughton    15 年前

    console.log(arguments) 对于第一行 beforeContentUpdate eval ),以确保内容arg是您期望的内容?

        3
  •  1
  •   Pavlo    15 年前

    beforeContentUpdate onRender 回拨:

    $(document).ready(function () {
        $('#catalog a[href]').each(function () {
            var link = $(this);
            $(this).qtip({
                content: 'loading...',
                api: {
                    onRender: function () {
                        var self = this;
                        $.ajax({
                            url: '/gamezilla/resources/components/viewgames.cfc?method=fGameDetails',
                            dataType: 'json',
                            data: { gameID: link.attr('href').match(/gameID=([0-9]+)$/)[1] },
                            success: function (data) {
                                self.updateContent(data.DATA[0][0]);
                            }
                        });
                    }
                },
                style: {
                    width: 300,
                    height: 300,
                    padding: 0,
                    name: 'light',
                    tip: {
                        corner: 'leftMiddle',
                        size: {
                            x: 40,
                            y: 40
                        }
                    }
                },
                position: {
                    corner: {
                        target: 'rightMiddle',
                        tooltip: 'leftMiddle'
                    }
                }
            });
        });
    });
    
        4
  •  1
  •   Germán Rodríguez    15 年前

    改变 var json = eval('(' + content + ')'); var json = eval(content); html: json.TNAME html: json.COLUMNS.TNAME

        5
  •  0
  •   Mohamad    14 年前