Closed Utach closed 8 years ago
Hey! I think loadData expects a promise. Something similar to this should work.
$("#jsGrid").jsGrid({
height: "auto",
width: "100%",
sorting: true,
paging: false,
autoload: true,
controller: {
loadData: function (filter) {
var data = $.Deferred();
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: "JsGridTesting.aspx/GetDataJSON",
dataType: "json"
}).done(function(response){
data.resolve(response);
});
return data.promise();
}
},
fields: [
{ name: "Name", type: "text" },
{ name: "Description", type: "text", width: 150 }
]
});
In fact there should not be difference between returning $.ajax and returning a promise. But for debug purposes I would suggest you using @geloh's example. Put a debugger;
in the done
of ajax and ensure you get inside. Also ensure that response
has valid format. As I remember (not sure though) the response have a field value
(or something like that) when you use Page methods. In this case you indeed need to resolve promise with array of items like: data.resolve(response.value)
.
Hi Geloh and Tabalinas, I use your examples, but it's still not work.... I put a debugger too, but nothing happen.. Could you please give more example of getting data from webservice, I want to see the server code returning json data. Please help
Ensure your ajax request works separately:
$.ajax({
type: "GET",
contentType: "application/json",
url: "JsGridTesting.aspx/GetDataJSON"
}).done(function(response){
console.log(response);
});
Be sure that expected result is printed in the console. Just in case: you need to open Chrome DevTools to see the console.
This is the result... the "JsGridTesting.aspx/GetDataJSON" returns the correct object, right ? But, on the grid, there is still no data...
No, as you can see your response is not an array of objects, but an object with a field d
where all data is just a string that you should parse. So in this case it should be at least data.resolve(response.d)
or even data.resolve(JSON.parse(response.d))
.
Woow, it perfectly works... you are great Many thanks @tabalinas
You are welcome!
It works for me too, thanks @tabalinas and @Utach !!
Wow. It's really helpful. thank @tabalinas
@tabalinas -- How should the JSON array be structured? I have tried everything that has been suggested and still cannot get anything to display when using the loadData controller.
Here is my script: loadData: function (filter) { return $.ajax({ method: "GET", url: "/api/sbom", contentType: "application/json", dataType: "json", data: filter }).done(function(response){ console.log(response); }); },
And here is the result as it shows in the Console:
@JTC1701, My guess is the grid loaded just fine, but it collapsed because of height: "100%"
. Try to set fixed in pixels value to be sure.
hello sir tabalinas iam using jsgrid from last one week.please help about json object fetch into controller.Iam using JAVA so i used jsgrid like.grid.jsp file.Please help me
@Utach can u send me that jsgrid code
@tabalinas and @Utach hello sir tabalinas iam using jsgrid from last one week.please help about json object fetch into controller.Iam using JAVA so i used jsgrid like.grid.jsp file.Please help me
I encountered this identical problem when using ASP.NET WebForms. After spending way too much time tinkering around with it, I discovered that if you're using a WebMethod in your ajax call instead of a generic handler, you will need to use type: "post"
Here's my working solution to this:
controller: {
loadData: function (filter) {
var data = $.Deferred();
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: url,
dataType: "json"
}).done(function (response) {
data.resolve(JSON.parse(response.d));
});
return data.promise();
}
},
@tabalinas Hi, I also faced similar issue with @JTC1701 . In my console, the result array appered. But I couldn't display it. Could you please help me?
Hi, I am new in jquery... I have been struggled to deal with loadData in jsgrid.... I am using Webform instead of MVC...
Here my code on aspx
and here is my code on server side
I have checked that my GetDataJSON has return JSON data correctly but the grid cannot bind the data properly...... Please help me....