2017-09-25 135 views
0

我正在向客戶端發送發送到API端點的請求。成功登錄後,API會返回一個JWT令牌。登錄POST請求到REST API不起作用

的API發送的郵差的請求時,下面的圖片所示完美的作品:

postman request

但是,當我試圖讓從客戶端這一要求,爲了節約使用AJAX請求JWT在客戶端的本地存儲中,請求甚至不會出現在日誌中。所以,我認爲我的AJAX調用有問題。

下面是客戶端代碼:

<script type="text/javascript"> 
     $('#button1').click(function(e){ 
      e.preventDefault(); 
      $.ajax({ 
       type: 'POST', 
       data: {email: "[email protected]", password: "123"}, 
       contentType: "application/x-www-form-urlencoded", 
       url: 'http://localhost:3000/api/login', 
       success : function(data){ 
        localStorage.setItem('token', data.token); 
        alert('ok'); 
       }, 
       error: function(result) { 
        alert('error'); 
       } 
      }); 
     }); 

</script> 

<button id="button1">Test API login</button> 

我在做什麼錯?

+0

顯示的代碼不起作用,因爲該按鈕在JavaScript運行時不存在。這是真實頁面中的相同順序嗎?如果用'$(function(){/ * code here * /})包裝它' – charlietfl

+0

檢查開發人員工具 –

+0

上的網絡調用,您已經忘記了標識符的'#'符號。它需要'$('#button1')。click(function(e){' –

回答

0

@charlietfl正確指出「javascript運行時按鈕不存在」。

所以,當我改變了代碼:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#button1').click(function(e) { 
      e.preventDefault(); 
      $.ajax({ 
       type: 'POST', 
       data: { 
        email: $('#inputEmail').val(), 
        password: $('#inputPassword').val() 
       }, 
       url: 'http://localhost:3000/api/login', 
       success: function (result) { 
        alert("success"); 
       }, 
       error: function (result) { 
        alert("error"); 
       } 
      }); 
     }); 
    }); 

</script> 

它開始工作。

謝謝大家的幫助!

0

選擇器不正確。 更改$('button1').click$('#button1').click

+0

好的一點,謝謝,但它仍然不起作用 –

+0

你的函數看起來是正確的。按鈕? – nilobarp

+0

不,沒有錯誤,無論是在瀏覽器還是在節點服務器控制檯。 –

0

嘗試添加dataType: json屬性,在Ajax請求,也許返回值的方式不正確,從而執行錯誤回調。

+0

Thx答覆我嘗試了,但沒有幫助,我使用contentType:「application/x-www-form-urlencoded」,因爲這是郵遞員實際使用時使用的內容 –

+0

首先,'contentType'是你要提交的數據的類型,'dataType'主要是響應數據類型,有什麼辦法可以測試它嗎?或者在代碼執行過程中發生了什麼錯誤? –