2015-12-04 93 views
1

我想通過我的Rails應用程序上的命令按鈕調用Javascript函數。Javascript函數參考錯誤

function fetchpurchases() { 
    var startDate = $('#histStart').val(); 
    var endDate = $('#histEnd').val(); 
    $('#histMainFrame').empty(); 
    $.ajax({ 
    url: '/transHistory/confirm?start_date=' + startDate + '&end_date=' + endDate, 
    type: 'get', 
    beforeSend: function() { 
     $('#mainContDiv').append('<img id=\'spinner\' src=\'/assets/spinner_green.gif\'>'); 
    }, 
    success: function(output) { 
     $('#spinner').remove(); 
     $('#histMainFrame').html(output); 
     $('#transPurTab').DataTable({ 
     destroy: true, 
     lengthChange: false, 
     pageLength: 50, 
     paging: true, 
     stripeClasses: ['oddStrip','evenStrip'] 
     }); 
    } 
    }); 
} 

按鈕是用調用Javascript函數的onclick事件定義的。

<div id="histToolbar"> 
    <div id="errorDiv"><p class="bigRedBright"></p></div> 
    <table id="histTools"> 
    <tr> 
     <th>Start Date</th> 
     <th>End Date</th> 
     <th></th> 
    </tr> 
    <tr> 
     <td><input type="text" class="datepicker" id="histStart" placeholder="Start Date..."></td> 
     <td><input type="text" class="datepicker" id="histEnd" placeholder="End Date..."></td> 
     <td><button onclick="fetchHistory()" id="histSubmit">Submit</button></td> 
     <td><button onclick="fetchpurchases()" id="deliverSubmit">Confirm Delivery</button></td> 
    </tr> 
    </table> 
</div> 

我可以導航到我通過在瀏覽器中手動輸入的方式創建的頁面。我寫的MySQL查詢工作正常,但是當我嘗試使用按鈕導航時,我得到reference error: fetchpurchases is not defined

此外(可能不相關),當我嘗試使用Firebug調試錯誤時,函數不會顯示在DOM窗口中。

+0

'fetchpurchases'綁定到窗口?你可以嘗試將它附加到窗口中,或者更好地將一個'App'對象附加到窗口並將你的函數放在那裏以命名空間。 – CWitty

回答

0

我會做一些像這樣

// Create a namespace for your code 
var App = App || {}; 

(function() { 
    App.fetchpurchases = function() { 
    //Your code here 
    }; 
})(); 

如果你不想用JS或jQuery來的功能結合到一個事件您可以將HTML改爲:

<td><button onclick="App.fetchpurchases()" id="deliverSubmit" type="button">Confirm Delivery</button></td>

當然,無論你放置那個JavaScript需要被添加到application.js或手動加載到頁面。