【问题标题】:Grails / jQuery - Rendering JSON object from Controller to jQuery functionGrails / jQuery - 将 JSON 对象从 Controller 渲染到 jQuery 函数
【发布时间】:2012-04-02 17:32:53
【问题描述】:

我想将一个对象从我的控制器渲染到一个 jQuery 回调函数。 我就是这样做的:

调用 jQuery Ajax 函数

function addVideo() {
    var url = "/myApp/project/addVideo"
    var data = 'videoURL=' + $('#videoUrlInputText').val()

    $.getJSON( url,  
            {
                videoURL: $('#videoUrlInputText').val()
            }, 
            updateVideoLoad(data)
    )
}

我的 Grails 'Project' 控制器

def addVideo() {
    def videoMap = [urlAccepted: "bim", provider: "bam"]
    render videoMap as JSON
}

我的 jQuery 回调函数(updateVideoLoad())

function updateVideoLoad(videoMap) {
    $('h4').html( 'Provider: ' + videoMap.provider )
}

我最终在浏览器中得到undefined 输出。浏览器控制台中没有任何内容。 控制器输出经过测试并正确呈现 JSON 对象。

知道为什么回调函数不能正确读取对象吗? 任何建议都是最受欢迎的。

提前致谢。

【问题讨论】:

    标签: jquery ajax json grails callback


    【解决方案1】:

    我不知道细节,但我怀疑你的成功回调有问题,因为它不仅仅是一个函数名或匿名函数。

    如果你试试这个呢?

    $.getJSON( url,  
            {
                videoURL: $('#videoUrlInputText').val()
            }, 
            function (response, status, jqxhr) {
                 updateVideoLoad(data)
            }
    
    )
    

    【讨论】:

    • 宾果游戏。将我的函数调用封装到“函数(数据){}”中解决了它。我不确定为什么该功能没有正确解析。 “它不仅仅是一个函数名”是什么意思?非常感谢!
    • 如果你在某处定义了这样的函数:function updateVideoLoad(data, status, jqxhr) {...},你会在 ajax 调用中引用它,如下所示:success: updateVideoLoad 或 $.getJSON(url, data, updateVideoLoad);` fn(data) 让它立即触发而不是作为回调(猜测一下)。
    猜你喜欢
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多