Question

Hi I am using Lift for my api and need some help generating a jSONP response. I have a working version of the JSON response and need to add to it so that I can use my api for cross-domain calls. Here is a code snippet of my api currently:

/Request/

case "api" :: "events" :: "person" :: _ Get req => JsonResponse(json_person(personEvents(req, req.request.queryString.mkString("")),person_details(req)))

/response/

def json_person(in : List[Events], person1 : List[Person]) : JValue = {
("person" ->
 person1.map(people =>
    ("name" -> people.main_person_name.is) ~
    ("alternate_name" -> people.aka.is)
  ))}
Was it helpful?

Solution

The way I've done this in the past is to check for whether or not a "callback" query parameter was provided in the URL, and if so, use the function name provided to perform the callback. If not provided, send back the object itself.

case "api" :: "events" :: "person" :: _ Get req => {
    val jsonObj = json_person(...)
    S.param("callback") match {
       case Full(callbackName) => JSFunc(callbackName, jsonObj).cmd
       case _ => JsonResponse(jsonObj)
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top