我是AngularJS和DataTables的新手。我正在使用AngularJS前端和Rails后端进行项目。
我正在尝试使用AJAX POST方法在我的项目中使用DataTables,但DataTable AJAX POST方法正在发送数据参数常量。
当我使用正常的AJAX POST请求时,它可以正常工作。我不知道为什么DataTables POST 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。
它给出了正确的成功回应。
$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 =一个和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 选项,它仍会在服务器端抛出以下错误。
内容:
[object Object]
请帮我解决这个问题。
答案 0 :(得分:0)
尝试删除JSON.stringify。数据表或ajax在内部处理JSON解析/字符串化。
答案 1 :(得分:0)
在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"
});
答案 2 :(得分:0)
改用它:
$('#example').dataTable( {
"ajax": {
"url": "data.json",
"contentType": "application/json",
"type": "POST",
"data": function ( d ) {
return JSON.stringify( d );
}
}
} );