Jsonp request

Hey guys,

I'm pretty new to enyo and currently I try to get a json from a web service. Because I'm requesting a different domain I'm using jsonpRequest, but the content doesn't get wrapped by the callback name. I used enyo.log so i figured out that my handling method doesn't even get called when I receive the json.

So can I handle the json in a different way??

That's my code:
enyo.kind({
    name: "UList",
    components: [
        {kind: "Button", ontap: "tapped", content: "Load data"},
        {name: "List", tag: "ul", allowHtml: true},
    ],
    rendered: function(){
        var request = new enyo.JsonpRequest({
            url: "https://api.fanreport.com/at/rest/state",
            callbackName: "callback"
        });

        request.response(enyo.bind(this, "processSearchResults"));
        request.go();
    },
    tapped: function(){

    },
    processSearchResults: function(inRequest, inResponse){
        enyo.log("test");
        var output = "";
        for(i = 0; i < inResponse.length; i++){
            output = inResponse[i].name;
            this.$.List.createComponent({content: output, tag: "li"});
            enyo.log(inResponse[i]);
        }
        this.render();
    }
});
Thank you.

Comments

  • edited February 2013
    Channeling Ben: "paste code first, then highlight, then choose the 'code' button to have it format properly with and tags.

    You are probably getting an error from the service so .response() isn't triggering. Add something like:

    request.error(enyo.bind(this, function() { this.log("OH NO!"); this.log(arguments); })); And see if you have anything you can use in there to see what's going on.
  • I added your code, but nothing happened.
    I guess it's not a service problem, because with the development tool of chrome I can see that I receive the json and I see all the data, but they're not getting displayed.
  • Very strange that neither response nor error are being called. Is this a "long-running" service that never sends readyState 4?
  • @SebastianSchenk: Sorry if this is a stupid question you've already considered but are you 110% sure the server site API supports JSONP? It is something only they can allow - you cannot make any changes to your enyo code to make their response JSONP compatible. (As I understand it).
  • @psarin: no, unfortunately I'm not sure whether they support jsonp, but since I've received a json and not an error message or something like this I thought it will work anyway. I've noticed that the received json isn't wrapped by the callbackName, which is the case if I perform a twitter jsonpRequest for example (twitter: enyo_jsonp_callback_1({"completed_in":0.064,..... / my service: [{"state_id":"4","region_id":"1...)

    Does that mean there is no jsonp support???

    Is there another way to get the json???
  • You may want to email them and ask them if they support it and/or can enable it on their end.

    A few things: 1) if you are developing to package your app for phones and such (e.g., via PhoneGap), cross domain scripting is allowed by mobile apps; 2) I believe you can enable cross domain for Chrome via a command line switch (of course, that only helps you in developing/debugging apps for #1; 3) if you have a back end server, you can proxy the results from the server to your app via server side application.
Sign In or Register to comment.