jQuery $.ajax 函数可以工作,但像 $.get/$.getJSON 这样的速记函数不能——使用 jQuery 1.7.2 和 Grails 2.1 和 twitter bootstrap

Posted

技术标签:

【中文标题】jQuery $.ajax 函数可以工作,但像 $.get/$.getJSON 这样的速记函数不能——使用 jQuery 1.7.2 和 Grails 2.1 和 twitter bootstrap【英文标题】:jQuery $.ajax function works, but shorthand functions like $.get/$.getJSON do not - using jQuery 1.7.2 and Grails 2.1 and twitter bootstrap 【发布时间】:2012-09-08 06:37:23 【问题描述】:

我的第一个问题。

有人对使用 ajax 请求的速记函数有任何问题吗?

这行得通:

('#book').typeahead(
    source: function(typeahead, query)
        return $.ajax(
            url: "/book/autocompleteBooks",
            type: "GET",
            dataType: "JSON",
            data: queryString: query,
            success: function(results)
                typeahead.process(results);
            
        );
    ,
    property: "title",
    onselect: onSelectBook
);

但这两个都不起作用:

('#book').typeahead(
    source: function(typeahead, query)
        return $.get(
            url: "/book/autocompleteBooks",
            dataType: "JSON",
            data: queryString: query,
            success: function(results)
                typeahead.process(results);
            
        );
    ,
    property: "title",
    onselect: onSelectBook
);

('#book').typeahead(
    source: function(typeahead, query)
        return $.getJSON(
            url: "/book/autocompleteBooks",
            data: queryString: query,
            success: function(results)
                typeahead.process(results);
            
        );
    ,
    property : "title",
    onselect: onSelectBook
);

另一件事是用createLink 替换url 也不起作用。

url: "/book/autocompleteBooks"

url: "$createLink(controller: 'book', action: 'autocompleteBooks')"

我宁愿使用速记函数使代码更易于阅读,基本上是为了美观:)

【问题讨论】:

究竟是什么不起作用?任何错误信息?请求是否真的被提出?有回应吗?等等…… 【参考方案1】:

$.get() 的结构如下:

$.get(
  "/book/autocompleteBooks",     // url
  queryString: query,          // data
  function(data)                // success
    // code
  ,
  'json'                         // dataType
);

$.getJSON() 是:

$.getJSON(
     "/book/autocompleteBooks",   // url
     queryString: query,        // data
     function(results)           // success
       // code
     
);

了解更多关于 $.get()$.getJSON()

【讨论】:

太棒了。我的愚蠢错误,我将来会更加专注。谢谢你。我会投票,但我还没有被允许。【参考方案2】:

请阅读您尝试使用的两种速记方法的文档。他们不接受选项对象作为第一个参数。

【讨论】:

【参考方案3】:

$.get() $.ajax() 方法的 id 简写。但实际上 $.get 的 syantax 是这样的

$.get('ajax/test.html', function(data) $('.result').html(数据); alert('加载已执行。'); );

$.ajax() 被称为

$.ajax( 网址:网址, 数据:数据, 成功:成功, 数据类型:数据类型 );

有关 $.get() 的更多信息,请参阅 http://api.jquery.com/jQuery.get/

【讨论】:

以上是关于jQuery $.ajax 函数可以工作,但像 $.get/$.getJSON 这样的速记函数不能——使用 jQuery 1.7.2 和 Grails 2.1 和 twitter bootstrap的主要内容,如果未能解决你的问题,请参考以下文章

需要一个不工作的 JQuery 函数

验证包含 Ajax jquery 的表单函数

$.extend 中的 AJAX 函数在 jQuery 3 中不起作用

jQuery:自学笔记——Ajax

jQuery AJAX Post 不工作

带有ajax数组的JQuery $.when [重复]