2

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 ステートメントにあると思われる場合。誰かがそれがどのように見えるべきか、またはjQuery ajaxとバックボーン同期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 );
        }
    });
});
4

2 に答える 2

6

関数をフェッチするためにデータを追加する必要がありました。最終的なコードは次のようになります。

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' }
});
于 2013-01-30T12:26:31.713 に答える
0

更新:アンダースコアとjQueryがロードされていることを確認してください。

Backbone.$ = jQuery なので、Backbone.fetch() は jQuery.ajax({type: "GET"}); です。

コレクション内の url プロパティは文字列である必要があります。私は力学に詳しくないので、「mechanics.ajaxurl」が文字列としてウィンドウ オブジェクトにあり、JSON を返す有効なエンドポイントを指している場合、それは機能するはずです。

変化する:

var new_posts = new Posts;

に:

var new_posts = new Posts();

次に、 と同様$.ajaxに、fetch()メソッドで次のことができます。

new_posts.fetch({
  success: function(collection, object, jqXHR) {
    your code...
  },
  error: function(jqXHR, statusText, error) {
    your code...
  }
});
于 2013-01-30T00:06:05.467 に答える