javascript - 如何通过我的模块化 js 结构中的 ajax 调用接收回数据?

标签 javascript jquery ajax modular

<分区>

它是一个非常基本的具有模块化结构的 java 脚本,基本上我想要做的是,通过 API 请求随机报价,通过 Mustache.js 在 HTML 页面上打印它们。之前没有使用模块化结构的方式,我设法完成了这个任务,但我也想尝试模块化的方式。

我现在面临的问题是,每当我尝试呈现我的数据(即引用 + 作者)时,我都会在我的控制台上收到一个错误,指出该函数未定义。

请检查我的代码~

        (function (){
      var quoting ={
        quotei : [],
        template : $("#quoteTemplate").html(),
        init: function (){
          this.cacheDom();
           this.bindEvents();
          this.createQuote();
          this.recieve();
          this.renderx();

        },

        cacheDom: function(){
          this.$el = $('#quotez');
          this.$button = this.$el.find('button');
          this.$template = this.$el.find('#quoteTemplate').html();

        },

        bindEvents: function(){
          this.$button.on('click',this.createQuote.bind(this));

        },

        renderx: function(data){

            this.$el.html(Mustache.render(this.template,data));

          },

        createQuote: function(){

        $.ajax({
           url:'https://andruxnet-random-famous-quotes.p.mashape.com/?cat=famous',
           type:'GET',
           data:{},
           dataType:'json',
           success : function(data){;
               this.render(data)

            },
           beforeSend: function(xhr){
             xhr.setRequestHeader("X-Mashape-Authorization","cvkQkHJurZmshuIhXxwXzIjBchHVp1yk0rDjsnNambAJ9duu7v");
             }
            });

          }, 

      };
      quoting.init();

      })()

请帮助我并原谅任何错误,因为这是我第一次在 StackOverflow 上发帖。

最佳答案

这是重构后的代码

工作演示:here 输出: [对象对象] { 作者:《小马丁·路德·金》, 类别:“著名”, 引用:“最终,我们不会记住敌人的话,而是 friend 的沉默。”

代码:

(function ($) {

  function quoting() {

    this.quotei = [];
    this.template = $("#quoteTemplate").html();
    this.init();
  }

  quoting.prototype = {
    init: function () {
      this.cacheDom();
      this.bindEvents();
      this.createQuote();
      //this.recieve(); 
      //this.renderx(); 
    },

    cacheDom: function(){
      this.$el = $('#quotez');
      this.$button = this.$el.find('button');
      this.$template = this.$el.find('#quoteTemplate').html();
    },

    bindEvents: function(){
      this.$button.on('click', this.createQuote.bind(this));
    }, 

    renderx: function(data) {
        console.log(data);
        //this.$el.html(Mustache.render(this.template,data));
    },

    createQuote: function(){
    var self = this;
    $.ajax({
       url:'https://andruxnet-random-famous-quotes.p.mashape.com/?cat=famous',
       type: 'GET',
       dataType: 'json',
       beforeSend: function(xhr) {
         xhr.setRequestHeader("X-Mashape-Authorization","cvkQkHJurZmshuIhXxwXzIjBchHVp1yk0rDjsnNambAJ9duu7v");
       }
     }).done(function(data) {
          self.renderx(data);
    })

   } 

  };

var myQuote = new quoting();

})(window.jQuery);

关于javascript - 如何通过我的模块化 js 结构中的 ajax 调用接收回数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358382/

相关文章:

javascript - 在 Ember.js 上使用 bower install 安装 dygraphs 失败

javascript - 刷新后动态字段仍然可见

jquery - 如何使用同一个按钮一个接一个地调用两个函数?

javascript - JQuery 从验证中排除一个字段

jquery - 使用 AJAX 将表单数据发送到 Fw/1(Coldfusion) Controller 功能

javascript - 使用 Ajax 的地下气象 API

javascript - 查找连接到按钮点击事件的 JavaScript 处理程序

javascript - JavaScript 不会将音频静音 - 需要使用mutationobserver 删除音频标签

javascript - jquery 转换在父级以下失败。为什么?我该怎么办?

javascript - 覆盖集合中的原始值