Piffen
Piffen

Reputation: 55

Pass data in a .getJSON. Possible? How?

I'm doing an app and I got a select where the user can choose different Teams. Each team contains a couple of patients. I save the chosen team with the data-bind selectedOptions and stores the option to an observable called 'selectedTeam'.

I'm receiving a list of patients by calling

self.searchPatients = function () {
    $.getJSON("/api/API/GetPatients", function (data) {
        ko.mapping.fromJS(data, {}, self.patients);
    });
};
self.searchPatients();

Back at my APIController I got a method that asks the DB for patients. This calls takes different arguments, one of them being what team to search from.

My question is how to pass the observable 'selectedTeam' to my APIController, convert it to a string to pass it to the DB call.

thx

Upvotes: 1

Views: 2102

Answers (3)

Damien
Damien

Reputation: 8987

Assuming the server method looks like as follow :

[HttpGet]     
public Object GetPatients(String team)
{
 // return the patients
}

You should use this JavaScript :

self.searchPatients = function () {
    $.getJSON("/api/API/GetPatients", { team: self.selectedTeam() }, function (data) {
        ko.mapping.fromJS(data, {}, self.patients);
    });
};

Because self.selectedTeam is an observable you can't send it to the server.What you want to send is its value. That's why you need to 'call' the observable.

 self.selectedTeam() // returns the value of the observable.

I hope it helps.

Upvotes: 0

Gaurav
Gaurav

Reputation: 8487

You can pass the data as a second argument of getJSON function :

self.searchPatients = function () {
    $.getJSON("/api/API/GetPatients", { param1: 'anyvalue' }, function (data) {
        ko.mapping.fromJS(data, {}, self.patients);
    });
};
self.searchPatients();

Upvotes: 1

Jatin patil
Jatin patil

Reputation: 4288

To pass data to controller you can use jquery ajax call as follows,

    $.ajax({
    type: "POST",
    url: "api/API/GetPatients",
    data: JSON.stringify(yourObject), // data to be passed to controller
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (result) {
       // your success call
    },
    error: function () {
        alert("Unable to Save.");
    }
});

Upvotes: 0

Related Questions