2013-11-15 90 views
0

我正在連接到rest-api的網站上工作。用戶可以登錄到網頁。我有一個註銷按鈕,後面我需要編寫javascript/json/http請求來終止用戶會話。這是我的,任何人都可以告訴我它是否有意義?使用http刪除用戶會話DELETE

<form action="http://apiaddresshere.com" method="delete" id = "myform"> 
      <input type = "submit" value="Logout"> 
     </form> 

<script> 


var form = document.getElementById("myform"); 

form.onsubmit = function (e) { 
    // stop the regular form submission 
    e.preventDefault(); 


    // construct an HTTP request 
    var xhr = new XMLHttpRequest(); 
    xhr.open(form.method, form.action, true); 
    xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 

    // send the null data as JSON 
    xhr.send(JSON.stringify()); 

    xhr.onloadend = function() { 
    // done 
    }; 
}; 


</script> 
+0

你有什麼問題? 「有意義」沒有什麼意義...... – Lee

+0

Hi Lee,我在學習如何使用這些技術的過程中,只是尋找一點點指導,以確定我是否正朝着正確的方向前進。 – bookthief

回答

1

你可以僅發佈到http://apiaddresshere.com/logout。這將比試圖拉開HTTP api的某些角落案例更爲簡單多了。

簡單&標準工作&繼續工作,我推薦這種方式:)

只有上帝知道什麼代理服務器或企業防火牆將會使您的DELETE請求。但是,嘿,當他們不喜歡它時,該應用程序將無法正常工作,並且您會被指責。

+0

嗯,我沒有意識到我可以做到這一點。你能給我一個關於可能是什麼樣子的想法嗎?總是新手到web開發和休息,所以發現它有點混亂。 – bookthief

+0

也許其餘的按鈕是AJAX,但註銷通常會將用戶帶到不同的頁面!所以只需做一個普通的香草形式提交,並讓服務器重定向到'/ login'頁面。根本沒有AJAX'y在這一個。 –

+0

如果我這樣做,是否意味着我根本不需要JavaScript? – bookthief

1
<a href="javascript:void(0)" onclick="logout()">Logout</a> 
    function logout(){ 
    $.ajax({ 
     url: "logout.php", 
    type:"post", 
dataType: 'json' 
    }).done(function() { 

    }); 
    } 
+0

嗨,謝謝,但你會介意解釋這是什麼嗎? – bookthief

+0

它簡單的想法,你張貼JSON空數據會話殺手頁面,ıt返回給你JSON。 – user2857877

+0

好吧,那麼「logout.php」是從哪裏來的? – bookthief

1

避免logoutlogin URIs。有動詞,而不是名詞。 URI應該代表資源,而不是動作。

如果你必須有一個會話使用URI像

apiaddresshere.com/sessions/23245252354323 

或類似的東西。然後「註銷」用戶發送一個DELETE請求到該會話資源。

當然,會議首先不是特別的RESTful,所以這可能是一個有爭議的問題。