PositiveGuy
PositiveGuy

Reputation: 47743

getJSON callback QueryString Param Issue

This works fine:

            $.getJSON("http://localhost:59396/xxxWeb/
CarouselHandler.ashx?action=getproducts&ids=" + ids,
                function(data) {

                    carousel.size(allProductIDs.length);

                    if (numberOfImagesLeftToShow <
numberOfImagesToDisplay) {
                        first += (numberOfImagesToDisplay -
numberOfImagesLeftToShow);
                    }

                    var d = 0;
                    for (var i = first; i <= last; i++) {

                        if (d != undefined) {
                            // add data using index of the array
returned by JSON (which starts at 0)
                            carousel.add(i, decode(data[d].ImageTag));
                        }

                        // set to last ProductID showing in Carousel
                        if (i == last) { lastProductID = parseFloat
(data[d].ProductID); }

                        d++;
                    }
                }
            );

This does not work, I get no pictures rendered after trying to add the &format=json&jsoncallback=? :

            $.getJSON("http://localhost:59396/xxxWeb/
CarouselHandler.ashx?action=getproducts&ids=" + ids +
"&format=json&jsoncallback=?",
                function(data) {

                    carousel.size(allProductIDs.length);

                    if (numberOfImagesLeftToShow <
numberOfImagesToDisplay) {
                        first += (numberOfImagesToDisplay -
numberOfImagesLeftToShow);
                    }

                    var d = 0;
                    for (var i = first; i <= last; i++) {

                        if (d != undefined) {
                            // add data using index of the array
returned by JSON (which starts at 0)
                            carousel.add(i, decode(data[d].ImageTag));
                        }

                        // set to last ProductID showing in Carousel
                        if (i == last) { lastProductID = parseFloat
(data[d].ProductID); }

                        d++;
                    }
                }
            );

Same for here, calling to our dev server.

$.getJSON("http://xxxdev/xxx/CarouselHandler.ashx?
action=getproducts&ids=" + ids + "&format=json&jsoncallback=?",
                function(data) {

No idea why. No errors, nothing. The data received back is no different then the first example when I was calling localhost. So it's valid JSON, that's not the issue here. It's that my function(data) is not being fired when I intruduce the querystring param. Without it, it works fine and function(data) is called.

Adding a "&jsoncallback=?" or "&callback=?" got rid of the Access to restricted URI denied" code: "1012 but I get no data showing in my plug-in when adding either of those querystring params to my url. So I don't get it. I thought that it's supposed to automatically replace ? with function(data) in my case?? Do I need to send something back in the response or something?? I ask because certain APIs such as yahoo require an _ in front. But so does this mean I also need to supply something in my json response? I thought all you need to do is just add the callback param in your request.

Upvotes: 1

Views: 1806

Answers (1)

redsquare
redsquare

Reputation: 78667

Your service needs to support jsonp which means the response has to be wrapped inside the callback key to represent a javascript function that the client executes.

As a summary, if your server responds with this at present

 { "x": 10, "y": 15} 

to support jsonp it needs to respond with

callbackFunction( { "x": 10, "y": 15} )

where callbackFunction is the name specified in the querystring.

See my answer here for more info

Upvotes: 3

Related Questions