【问题标题】:Data table post request params not working数据表发布请求参数不起作用
【发布时间】:2016-04-26 09:41:50
【问题描述】:

我是 AngularJS 和 DataTables 的新手。我正在开发一个使用 AngularJS 前端和 Rails 后端的项目。

我正在尝试使用 AJAX POST 方法在我的项目中使用 DataTables,但 DataTable AJAX POST 方法正在发送 data params 常量。

当我使用普通的 AJAX POST 请求时,它可以正常工作。我不知道为什么 DataTables POST AJAX 不起作用。

请帮我解决这个问题。

在 AngularJS 中使用 AJAX 调用

$.ajax({
   data: JSON.stringify({
       "key1": "value1",
       "key2": "value2"
   }),
   headers: "application/json; charset=utf-8",
   success: function(data){
        console.log(data);
   },
   error: function(){
       console.log("error");
   },
   type: "POST",
   url: "http://localhost:3000/api"
 });

此代码 AJAX POST。

它给出了正确的成功响应。

DataTables POST 请求

$scope.studentList = {
   bFilter: false,
   paging:   false,
   bRetrieve : true,
   ajax: {
       data: JSON.stringify({
       "key1": "value1",
       "key2": "value2"
   }),
   headers: "application/json; charset=utf-8",
   success: function(data){
        console.log(data);
   },
   error: function(){
       console.log("error");
   },
   type: "POST",
   url: "http://localhost:3000/api"
   processData: false,
 },
 columns: [
     {}]
};

它在服务器端引发以下错误。我的代码有错误吗?

解析请求参数时出错。

内容:

0=%7B&1=%22&2=s&3=t&4=a&5=n&6=d&7=a&8=r&9=d&10=&11=i&12=d&13=%22&14=%3A&15=4&16=0&17=%2C&18=% 22&19=s&20=e&21=c&22=t&23=i&24=o&25=n&26=&27=i&28=d&29=%22&30=%3A&31=8&32=%2C&33=%22&34=y&35=e&36=a&37=r&38=%22&39 =%3A&40=2&41=0&42=1&43=6&44=%2C&45=%22&46=m&47=o&48=n&49=t&50=h&51=%22&52=%3A&53=2&54=%2C&55=%22&56=d&57=a&58=t&59=e&60= %22&61=%3A&62=1&63=8&64=%7D

即使我使用 processData: false 选项,它仍然会在服务器端引发以下错误。

解析请求参数时出错。

内容:

[对象对象]

请帮我解决这个问题。

【问题讨论】:

标签: javascript jquery ruby-on-rails angularjs ajax


【解决方案1】:

尝试删除 JSON.stringify。数据表或 ajax 在内部处理 JSON 解析/字符串化。

【讨论】:

  • 你从哪里挖出这个问题? :) - 发布11 months ago :)
  • 我的回答对你有帮助吗?
  • 我刚刚在active 队列中看到了这个问题。我个人没有遇到过这个问题。
【解决方案2】:

改用这个:

$('#example').dataTable({
    "ajax": {
        "url": "data.json",
        "contentType": "application/json",
        "type": "POST",
        "data": function (d) {
            return JSON.stringify(d);
        }
    }
});

【讨论】:

    【解决方案3】:

    在dataTables中你不能在数据中传递字符串,你需要一个函数:

    var dataObject = {
      "key1": "value1",
      "key2": "value2"
    };
    
    var table = $('#exampleTable').DataTable({
      ajax: {
        "url": "urlExample.com",
        "type": "POST",
        "data": function(d) {
          $.extend(d, dataObject);
          return JSON.stringify(d);
        },
        "dateType": "json",
        "contentType": "application/json; charset=utf-8"
      }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多