簡體   English   中英

AJAX 調用中斷,NodeJS,Express,Handlebars

[英]AJAX call is broken, NodeJS, Express, Handlebars

我已經為此工作了幾天。 我敢肯定它真的很愚蠢,但我已經到了理智的盡頭。

公共文件已正確設置。

錯誤信息:

Uncaught ReferenceError: togDefine is not defined

前端 HTML:

<li class="list-group-item list-group-item-dark">
   <div class="row">
     <div class="col-md-4"><strong>Heating:</strong> {{#if heating}} {{this.heating}} {{else}} N/A {{/if}}</div>
     <div class="col-md-4"><strong>Cooling:</strong> {{#if cooling}} {{this.cooling}} {{else}} N/A {{/if}}</div>
     <div class="col-md-4">
       <input type="checkbox" id="pvt{{this.id}}" checked="{{this.private}}" onchange="togDefine({{this.id}}, {{this.private}});" data-toggle="toggle" data-on="Private" data-off="Public" data-onstyle="success" data-offstyle="danger" />
     </div>
   </div>

AJAX 致電:

$(function() {

//  Private-Public toggle
let togDefine = (id, pvt) => {
  $.ajax({
    type: "POST",
    url: "/api/pvtToggle",
    data: {
      id: id,
      newState: (pvt === 'true') ? false : true
    },
    success: function(text) {
      if (text === 'ok') {
        pvtSuccess(id, pvt);
      } else {
        console.log('updatePvt failed');
      }
    }
  });

};


let pvtSuccess = (id, pvt) => {
  $('#pvt' + id).attr('checked', (pvt === 'true') ? 'false' : 'true');
};


});

后端:

//TOGGLE Private vs Public PROPERTY
app.put('/api/pvtToggle/', isAuthenticated, function(request, response) {
  db.Prop.update({
    private: request.params.newState
  }, {
    where: {
      id: request.params.id
    }
  }).then(data => {
    response.send('ok');
  }).catch(error => {
    console.log(error);
  });

});

請幫我弄清楚為什么請求不能正常工作。 :D

您的 function togDefine()在此塊內定義:

$(function() { /* in here */ })

因此,該 function 名稱僅在該塊內可用,對您的 HTML 不可用。 由於僅定義 function 並沒有實際執行任何操作,因此實際上沒有理由在此類塊內定義 function ,除非您只希望該符號在該塊內可用。

由於您在這里明確不希望這樣做,只需將togDefine()的定義移到該塊之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM