2015-04-03 1 views
0

Я создаю приложение rails с некоторым apis для мобильного приложения.Запрос POST для рубинга на сервере rails fail

Проблема в том, что все запросы 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 ", ..}' –

+0

Идите прямо к примерам этой [этой ссылки ] (http://api.jquery.com/jquery.ajax/) .. и см. синтаксис типов данных 'JSON' .. –

+0

Я пробовал без" ", но это не сработало. Странно, что если я отправлю запрос через плагин postman для chrome, я получу правильные данные! – ste

ответ

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    }); 
Смежные вопросы