2015-04-03 110 views
0

我正在爲移動應用程序構建一些導航應用程序與一些apis。嚮導軌服務器上的紅寶石POST請求失敗

問題是所有POST請求都不起作用。

以下是我叫他們(從PhoneGap的應用程序):

72     $.ajax({ 
73      url: 'http://www.my-website.com:port/api/login', 
74      type: 'POST', 
75      dataType: 'json', 
76      data:{"email":"my-email", 
77       "password":"my-password"}, 
78      success: function(data){ 
79       alert(data); 
80      }, 
81      error: function (event, jqXHR, ajaxSettings, thrownError) { 
82       alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])'); 
83      } 
84     }); 

這裏的服務器日誌:

Started POST "/api/login" for xxx.xxx.xxx.xxx at 2015-04-03 10:58:51 +0000 
Processing by ApiController#login as HTML 
    Parameters: {"email"=>"\"my-email.com\"", "password"=>"[FILTERED]"} 
Completed 500 Internal Server Error in 2ms 

JSON::ParserError (A JSON text must at least contain two octets!): 
    app/controllers/api_controller.rb:71:in `parse_request' 

這裏就是我得到的API控制器中的錯誤:

before_filter :parse_request 
... 
    def parse_request 
     @json = JSON.parse(request.body.read) 
    end 
+0

不是..問題是您應用的**語法**寫下了'data:{email:「my-email」,..}' – 2015-04-03 11:14:02

+0

直接轉到[此鏈接的示例](http://api.jquery.com/jquery.ajax/)..並查看'JSON'數據類型的語法.. – 2015-04-03 11:17:01

+0

我嘗試了沒有「」但它沒有工作。 奇怪的是,如果我通過郵遞員插件發送請求以獲取鉻,我會收到正確的數據! – ste 2015-04-03 12:18:54

回答

0

我解決了更改ajax請求代碼的問題:

69    var dt={ 
70     "email":"my-email", 
71     "password":"my-password" 
72     } 
73 
74    $('#submit').click(function(){ 
75     //localStorage['id'] = 10; 
76     //if (localStorage != null) 
77     // window.location='index-logged.html'; 
78     $.ajax({ 
79      url: 'http://www.my-website.com/api/login', 
80      type: 'POST', 
81      data: JSON.stringify(dt), 
82      cache: false, 
83      success: function(data){ 
84       alert(data); 
85      }, 
86      error: function (event, jqXHR, ajaxSettings, thrownError) { 
87       alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])' 
88      } 
89     }); 
90    });