AJAX通过API发布请求 - 解析请求参数时发生错误

问题描述:

我试图使用AJAX通过API执行POST请求。出于某种原因,我遇到了这个错误:“解析请求参数时发生错误”。AJAX通过API发布请求 - 解析请求参数时发生错误

从我的理解,这个错误发生在json解析时,我通过url属性到POST请求。

我读过在互联网各种计算器帖子,好像使用以下应该工作:

data: { todo: { user_id: userId, body: todoBody } }, 
datatype : 'json', 

我已经使用这个问题,以及还试图和它不工作

data: { "todo": { "user_id": userId, "body": todoBody } }, 
datatype : 'json', 

我希望有人能帮助引导我正确的方向:)

下面是完整的代码:

index.html.erb

<div class='new-todo'> 
    <%= form_for todo, remote: true do |f| %> 

     <div class="form-group"> 
     <%= f.label :body, 'Todo Item' %> 
     <%= f.text_area :body, rows: 4, class: 'form-control', placeholder: "Enter todo item" %> 
     </div> 

     <div class="form-group"> 
     <%= f.submit "Create", class: 'btn btn-success', data: { user_id: current_user.id, user_token: current_user.auth_token} %> 
     </div> 

    <% end %> 
</div> 

Api.js

var superlist = {}; 

superlist.setupDeleteHandlers = function() { 

    $(document).ready(function(){ 


    $('.new-todo').submit(function(event) { 
     var userId = $('.btn-success').attr("data-user-id"); 
     var userToken = $('.btn-success').attr("data-user-token"); 
     var todoBody = $('#todo_body').val(); 
     var data = {"todo": {"user_id": userId, "body":todoBody}}; 
     console.log("test", userId, userToken, todoBody, data); 
     $.ajax({ 
     type : "POST", 
     url : "/api/users/"+userId+"/todos", 
     data: { "todo": { "user_id": userId, "body": todoBody } }, 
     datatype : 'json', 
     contentType: "application/json; charset=utf-8", 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader ("Authorization", userToken); 
     }, 
     success : function() { 
      alert('Item successfully created!'); 
     }, 
     error : function(error) { 
     } 
     }); 
    }); 

    }); 

}; 
+0

,而不是'{ “待办事项”:{ “USER_ID” :userId,“body”:todoBody}}'在ajax请求数据中只使用'data'变量。 – 2014-12-04 09:34:51

+0

试过(数据:数据),它也不能正常工作。 – Jayzz55 2014-12-04 09:37:14

尝试使用这样的:

$.ajax({ 
    type : "POST", 
    url : "/api/users/"+userId+"/todos", 
    data: JSON.stringify(data), 
    contentType: "application/json; charset=utf-8", 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader ("Authorization", userToken); 
    }, 
+0

非常感谢!这样可行!我读过其他的stackoverflow后,使用data:data,datatype:'json'会工作。非常感谢你指导我朝着正确的方向发展! :) – Jayzz55 2014-12-04 12:08:25