Uncaught TypeError: Cannot read property 'length' of undefined with AJAX Resonse
Uncaught TypeError: Cannot read property 'length' of undefined with AJAX Resonse
5320835@qq.com
Posts: 15Questions: 5Answers: 0
Hi,
I am facing a issue above when I update a column on data tables, here is my client side code
var editor = new $.fn.dataTable.Editor({
ajax: {
url: "http://localhost/sql/RaymSP_GatewayPaymentOrder",
type: "POST",
contentType: "application/json; charset=utf-8",
data: function (d) {
var d = [{
"username": 'john',
"method": 2,
"storeid": Number(editor.field('store_id').val()),
"ordernumber": editor.field('OrderNumber').val(),
"paymentmethod": editor.field('PaymentMethod').val(),
"statusdescription": editor.field('Status').val()
}]
return JSON.stringify(d);
},
dataType: "json",
dataSrc: "ResultSets"
},
The server response would like this
{
"ResultSets": [],
"OutputParameters": {},
"ReturnValue": 0
}
This question has an accepted answers - jump to answer
This discussion has been closed.
Answers
It looks like the response from the server doesn't match what Editor expects. Are you able to update your returned JSON to match what Editor expects?
Regards,
Allan
Hi Allan, Thanks for your commits, I'm not be able to change server side settings, is there any way to to on datatables?
Regards,
Wenbin
You can use the
postSubmit
event to modify the data being returned from the server into what Editor requires. Unfortunately, Editor does require certain information back from the server - there is no way around that.Allan
Dear Allan,
I've tested this event today but doesn't work, the event even didn't not be called when the error message occur, I tried the other ways but also doesn't work, there are dataSrc, ajax function and ajax object with success and complete. the last code here is below
Now there is no error message occur however the editor looks like freeze when I clicked Update button, no response and I cannot open editor form again from table after I close it, I have to reload whole page.
As you can see, my server has JSON response however there is no data as name inside and unfortunately to change the response is very complex.
Can we manipulate server response in AJAX in datatable, if yes, can you give me a similar example as I am very new for programming.
Many Thanks,
Wenbin
Hi Allan,
Sorry the error message still there as below
dataTables.editor.js:formatted:3594 Uncaught TypeError: Cannot read property 'length' of undefined
Here is server response
{
"ResultSets": [
[
{
"store_id": 3,
"store_name": "鲁班路店",
"OrderNumber": "3082936",
"OrderType": "MOSAIC",
"OrderDate": "2016-10-13 10:26:12",
"subject": "MPOS订单编号3082936",
"TotalAmount": 0.01,
"Discount": 0,
"Tax": 0,
"ShippingFee": 0,
"CustomerName": null,
"PhoneNumber": null,
"Status": "已关闭",
"PaymentMethod": "微信"
}
]
],
"OutputParameters": {},
"ReturnValue": -1
}
However there is ResultSets instead of data in server response.
Please help,
Thanks,
Wenbin
You should be able to use:
If that isn't working for you, can you give me a link to the page showing the issue so I can help to debug it.
Allan
Hi Allan,
Thanks for your reply, as you know it's mid night here, so I will test it tomorrow morning and let you know,
Thanks again for your support,
Regards,
Wenbin
Dear Allan,
I just verified this method and it works, that's fantastic, you know I've been working on this issue for last couple days and finally it solved, thank you so much for this big help...
Regards,
Wenbin