2013-07-11 47 views
1

我正在嘗試爲Tiny Tiny RSS構建一個閱讀器,並且幾乎卡在了廣場上。我正在通過prototype.js(1.6.1)設置應用程序使用ajax,並嘗試簡單登錄到應用程序來檢索密鑰。使用Prototype.js無法登錄到Tiny Tiny RSS API

這是我到目前爲止有:

new Ajax.Request(Api.BASE_URL, { 
    method: "get", 
    parameters: {"op": "login", "user": "user", "password": "password"}, 
    onSuccess: authSuccess, 
    onFailure: failure 
}) 

凡Api.BASE_URL被定義爲「http://tt-rss.example.com/api/

當我嘗試登錄我的錯誤反應「NOT_LOGGED_IN」,這似乎表明api要麼不識別我正在使用的op調用,要麼參數是錯誤的,或者什麼。

什麼特別奇怪的是,這應該是等效於CURL命令:

捲曲-d「{ 「OP」: 「登錄」, 「用戶」: 「用戶」, 「密碼」:「密碼「}'http://tt-rss.example.com/api/

哪個工作正常。我覺得我錯過了一件非常簡單的事情,但我不確定它是什麼。任何幫助將非常感激。

回答

1

除了get和post錯誤之外,事實證明問題在於我試圖使用錯誤的ajax選項傳遞複雜的json對象。

予以更簡單的函數調用(isloggedin)測試,所以作爲我的JSON對象的定義:

parameters: {"op": "isloggedin"}, 

當我使用的「參數」 AJAX選項,請求的形式發送的原始數據:

op=isloggedin&_= 

哪一個被拒絕。

在另一方面,從捲曲的原始數據看上去像:

{"op":"isloggedin"} 

正在工作。

This post讓我走上正軌。我需要使用「postBody」而不是「參數」才能正確發送數據。我最後的命令看起來像這樣:

postBody: '{"op": "isloggedin"}', 

它的工作。此外,顯然在這種情況下,引號的類型很重要。如果我在外面使用單引號,它就會起作用。如果我在外面用雙引號,如果失敗了。