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

标签 jquery ruby-on-rails ajax json api

我正在尝试使用 AJAX 通过 API 执行 POST 请求。由于某种原因,我遇到了此错误:“解析请求参数时发生错误”。

据我了解,这个错误是由于我将url属性传递到POST请求时进行json解析而发生的。

我在互联网上阅读了各种 stackoverflow 帖子,似乎使用以下内容应该可行:

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) {
        }
      });
    });

  });

};

最佳答案

尝试使用这个:

$.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);
    },

关于jquery - 通过 API 的 AJAX Post 请求 - 解析请求参数时发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27290501/

相关文章:

javascript - 如何根据提交时的每个标签获取多选 optgroup 值?

ruby-on-rails - Twitter Bootstrap 弹出框不工作

asp.net-mvc - 对未经身份验证的用户和 AJAX 调用的不同响应

javascript - Jquery从另一个文本输入值获取输入值并设置为隐藏输入值

jquery - 如何捕获使用 DataTables 插件分页的复选框的值

javascript - 在 IE6 上测试 jQuery 和 JavaScript

ruby-on-rails - LearnRubyTheHardWay Ex#46 - rake 中止,你应该需要 'minitest/autorun'

css - 无法更改 Rails 中的 Bootstrap 黑色标题颜色,即使背景图像为 : none

jquery - Asp.net MVC FileContentResult - 阻止在浏览器中打开

python - 从 POST 请求获取对神经网络 web.py 包装器的响应