In this fiddle line 27 shows
var doctors = [
new Doctor("Doc A","A1"),
new Doctor("Doc B","A1"),
new Doctor("Doc C","A3")
];
Here, Doc A
, Doc B
and Doc C
are hard-coded. They are also Knockout bindings:
ko.applyBindings(
new Patient("idValue", "nameValue", "addressValue", "Female", "usernameValue",
"passwordValue", "emailValue", "mobileValue", "imgFileValue",
"imgSrcValue", "imagePathValue", "useridValue", "A3")
);
Whatever is passed a1
, a2
or a3
selects the respective doc. For example, I am passing a3
in the bindings, so I get Doc C
selected.
Given this JSON:
{
"doctors": [
{
"id": 8,
"schedules": [
{
"id": 8,
"totime": "11:17",
"dayId": 2,
"location": "Somajiguda",
"fromtime": "10:17",
"hospitalId": 5,
"day": "Tuesday",
"hospital": "Yashoda"
}
],
"username": "d1",
"degree": "DA(Anaesthesia)",
"email": "1@2.com",
"imagePath": "",
"department": "Bio-Chemistry",
"name": "d1",
"userid": 51,
"gender": "Male",
"mobile": "1234567900"
},
{
"id": 10,
"schedules": [
{
"id": 10,
"totime": "12:35",
"dayId": 2,
"location": "Somajiguda",
"fromtime": "11:35",
"hospitalId": 5,
"day": "Tuesday",
"hospital": "Yashoda"
}
],
"username": "d3",
"degree": "BDS",
"email": "d3@d3.com",
"imagePath": "",
"department": "Bio-Chemistry",
"name": "d3",
"userid": 56,
"gender": "Male",
"mobile": "1234567890"
},
{
"id": 1,
"schedules": [
{
"id": 1,
"totime": "12:55",
"dayId": 1,
"location": "Somajiguda",
"fromtime": "11:55",
"hospitalId": 5,
"day": "Monday",
"hospital": "Yashoda"
}
],
"username": "doctor",
"degree": "BDS",
"email": "",
"imagePath": null,
"department": "Critical Care",
"name": "doctor",
"userid": 4,
"gender": "Male",
"mobile": "1234567890"
},
{
"id": 7,
"schedules": [
{
"id": 7,
"totime": "11:17",
"dayId": 2,
"location": "Somajiguda",
"fromtime": "11:17",
"hospitalId": 5,
"day": "Tuesday",
"hospital": "Yashoda"
}
],
"username": "donald",
"degree": "DA(Anaesthesia)",
"email": "donald@doctor.com",
"imagePath": "",
"department": "Bio-Chemistry",
"name": "donald",
"userid": 47,
"gender": "Male",
"mobile": "1234567989"
},
{
"id": 6,
"schedules": [
{
"id": 6,
"totime": "11:15",
"dayId": 1,
"location": "Somajiguda",
"fromtime": "11:15",
"hospitalId": 5,
"day": "Monday",
"hospital": "Yashoda"
}
],
"username": "john",
"degree": "BDS",
"email": "john@john.com",
"imagePath": null,
"department": "Anesthesiology",
"name": "john",
"userid": 46,
"gender": "Male",
"mobile": "1234567890"
},
{
"id": 5,
"schedules": [
{
"id": 5,
"totime": "13:11",
"dayId": 2,
"location": "Somajiguda",
"fromtime": "12:11",
"hospitalId": 5,
"day": "Tuesday",
"hospital": "Yashoda"
}
],
"username": "sknayak",
"degree": "BDS",
"email": "sknayak@sknayak.com",
"imagePath": "",
"department": "Anesthesiology",
"name": "sknayak",
"userid": 38,
"gender": "Male",
"mobile": "1234567890"
},
{
"id": 2,
"schedules": [
{
"id": 2,
"totime": "16:26",
"dayId": 6,
"location": "Somajiguda",
"fromtime": "15:26",
"hospitalId": 5,
"day": "Saturday",
"hospital": "Yashoda"
}
],
"username": "drsukant",
"degree": "BDS",
"email": "",
"imagePath": null,
"department": "Anesthesiology",
"name": "sukant",
"userid": 9,
"gender": "Male",
"mobile": "1234567890"
}
]
}
Obtained with a GET
request:
$.ajax({
type: "GET",
url: projectUrl+"getDoctors",
dataType:"json",
jsonp: true,
async:false ,
success: function (data) {
$.each(data.doctors, function(index, currPat) {
console.log(currPat.username);
});
}
});
I want username
and ID
from the JSON in place of 'Doc A', 'a1'
, 'Doc B', 'a2'
, etc... as a replacement for var doctors = ...
.
In my AJAX success, I tried:
success: function (data) {
$.each(data.doctors, function(index, currPat) {
new Doctors(currPat.id,currPat.username);
});
}
May be something like this?
var doctors = [];
$.ajax({
type: "GET",
url: projectUrl+"getDoctors",
dataType:"json",
jsonp: true,
async:false ,
success: function (data) {
$.each(data.doctors, function(index, currPat) {
doctors.push[currPat.id,currPat.username];
});
}
});
Your end result should be like this:
doctors = [[id1,name1],[id2,name2], ...... [id10,name10]]
Or you can also use the format like this:
doctors.push({id:currPat.id,name:currPat.username});
Then your end result should be something like this:
doctors = [{id:id1,name:name1},{id:id2,name:name2},......,{id:id10,name:name10}]
*I personally prefer format 2
EDIT Use of JQuery, .map()
var doctors;
$.ajax({
type: "GET",
url: projectUrl+"getDoctors",
dataType:"json",
jsonp: true,
async:false ,
success: function (data) {
doctors = $.map(function () {
return [data.id,data.username];}).get();
}
});
A slightly more short hand than the above mention.
It looks like jQuery.map()
can do what you need...
success: function (data) {
doctors = $.map(data.doctors, function(doctor) {
new Doctor(doctor.id, doctor.username);
});
}
consider your Doctor function looks like:
// Doctor constructor with name and username properties
var Doctor = function(nameParam, usernameParam){
this.name = nameParam;
this.username = usernameParam;
};
then on AJAX success function populate all received doctors like:
$.each(jsonStr.doctors, function(index, currPat) {
var doc = new Doctor(currPat.name,currPat.username);
doctors.push(doc);
});
alert(JSON.stringify(doctors));
working fiddle
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.