Javascript wordpress ajaxurl获取主干模型

Javascript wordpress ajaxurl获取主干模型,javascript,wordpress,backbone.js,Javascript,Wordpress,Backbone.js,我正在学习Backbone.js,并试图在此基础上构建简单的主题。我在functions.php中有以下代码来加载js: function load_js() { wp_enqueue_script('app-js', get_template_directory_uri() . '/app.js', array('backbone')); wp_localize_script('app-js', 'mechanics', array('ajaxurl' =>

我正在学习Backbone.js,并试图在此基础上构建简单的主题。我在functions.php中有以下代码来加载js:

    function load_js() {
      wp_enqueue_script('app-js', get_template_directory_uri() . '/app.js', array('backbone'));
      wp_localize_script('app-js', 'mechanics', array('ajaxurl' => admin_url('admin-ajax.php')));
    }

    add_action('wp_enqueue_scripts', 'load_js');
在app.js中,获取帖子的简单代码如下:

(function($){
    var Post = Backbone.Model.extend({});

    var Posts = Backbone.Collection.extend({
            model: Post,
            url: mechanics.ajaxurl
    });

    var new_posts = new Posts;
    new_posts.fetch();
})
服务器端工作正常(我已经用jquery对其进行了测试)。若认为问题在于url语句。有人能告诉我它应该是什么样子吗?或者jQueryAjax和主干同步url之间是否有区别

工作jQuery版本

jQuery(document).ready(function() {
    var $ = jQuery;

    $.ajax({
    type: "GET",
    url: mechanics.ajaxurl,
    data: { action : 'mechanics_get_posts' },
    dataType: "json",
    success: function( response ) {
        alert( response );
        }
    });
});

更新:确保加载下划线和jQuery。

Backbone.$=jQuery,所以Backbone.fetch()是jQuery.ajax({type:“GET”})

集合中的url属性应为字符串。我不熟悉力学,因此如果窗口对象上的“mechanics.ajaxurl”是一个字符串,并且指向一个有效的端点,该端点返回JSON,应该可以工作

更改:

var new_posts = new Posts;
致:

然后,与
$.ajax
一样,在
fetch()
方法中,可以执行以下操作:

new_posts.fetch({
  success: function(collection, object, jqXHR) {
    your code...
  },
  error: function(jqXHR, statusText, error) {
    your code...
  }
});

我需要添加数据以获取函数。最终代码如下所示:

var Post = Backbone.Model.extend({});

var Posts = Backbone.Collection.extend({
    model: Post,
    url: mechanics.ajaxurl
});

var new_posts = new Posts;
new_posts.fetch({
    data: { action: 'mechanics_get_posts' }
});

你能展示一下你使用的JS代码吗?它不起作用。与FireBug进行了检查,未看到任何请求。“mechanics”是我用load_js函数声明的主题名和名称空间。我刚刚发现了这一点,但是,除了jQuery外,您还加载了下划线吗?它们需要在主干之前加载。下划线是一个“硬依赖项”。如果您确实加载了这些内容,但它仍然不起作用,您能否在url属性处断开点以查看url字符串是什么?
var Post = Backbone.Model.extend({});

var Posts = Backbone.Collection.extend({
    model: Post,
    url: mechanics.ajaxurl
});

var new_posts = new Posts;
new_posts.fetch({
    data: { action: 'mechanics_get_posts' }
});