Σχετικά με το response.dΈτρεξα το εξής:
var Categories = {"Table":[{"CategoryID":1,"CategoryName":"Beverages"},{"CategoryID":2,"CategoryName":"Condiments"}]};
function handle_data() {
var ddlCategory = $('#data');
$.each(Categories.Table, function (index, Category) {
ddlCategory.append('<option value="' + Category.CategoryID + '">' + Category.CategoryName + '</option>');
});
}
το οποίο τρέχει σωστά. Το response.d που είναι στο κώδικα σου είναι ένα JSON element το οποίο περιέχει ένα Table. Είναι στην ουσία ένα datset (σε JSON) και περιέχει datatables. Οπότε στο javascript πρέπει να γράψεις σε ποιο datatable θέλεις κάνεις το iteration.
Σχετικά με τη μετατροπή string2jsonΤώρα, αν αλλάξω το Categories να είναι ένα string όπως αυτό:
var Categories = '{"Table":[{"CategoryID":1,"CategoryName":"Beverages"},{"CategoryID":2,"CategoryName":"Condiments"}]}';
παίρνω ένα ddl με πάρα πολλά undefined elements. Τα undefined elements είναι τόσα όσα και οι χαρακτήρες του παραπάνω string.
Άρα με βάση το παραπάνω η web method σου επιστρέφει string και όχι κάποιο JSON αντικείμενο. Η συνάρτηση που χρησιμοποιείς είναι σωστά, αλλά όταν η web method απαντάει επιστρέφει string. πρέπει να κάνεις μία μετατροπή και στο client ώστε να πάρεις το JSON αντικείμενο.
Υπάρχει η σχετική συνάρτηση της
jQuery.parseJSON(string)
Τάσος Καραγιάννης
Baby debugging steps...