[jQuery] cross domain getJSON nothing happens

2009-10-23 Thread jayQuery

hi all,

I'm new to this group, and after doing a lot (and I mean a LOT) of
searching, I can't find an answer for my problem:

I'm basically trying to do a simple $.getJSON, and the setup is
simple:

Firefox 3.5 MacOSX, latest jQuery (1.3.2)

the json file named myjson.json (I've reduced its contents to its
minimum for testing purposes and it validates in JSONLint):
{result: true}

The javascript:
$.getJSON('http://site1:/myjson.json', {}, function(data) { alert
(data.result); })

I'm testing it in a local server (MAMP), and the code above works as
expected.

The problem is when I place the query that contains the callback (?
format=jsoncallback=?), as I understand correctly, this is the way to
get cross domain json:

$.getJSON('http://site1:/myjson.json?format=jsoncallback=?', {},
function(data) { alert(data.result); })

It doesn't show the alert, either when in my local server or in an
outside server.

By looking at the firebug console/net panel, I can see that the
response + json are correct, but the alert simply doesn't happen...
All this because of the cross domain query.

I've tried all the other ways ($.ajax(), $.get(), $.post()) and after
adding the callback query nothing happens!
I've even tryed adding the ( ) and doing an eval, but nothing...
Anything I put inside the function(data) {} is ignored.

help please...


[jQuery] Re: cross domain getJSON nothing happens

2009-10-23 Thread jayQuery

thanks for the reply, but it gave me an invalid label with my json,
which as I've read before, can be solved by eval'ing it with the
parenthesis:
var myObj = eval( ( + someJsonString + ) );

but after eval'ing, nothing happens (again), no alert :(
In firebug I can see the json is there...


 Both of these methods work fine for me:

 $.getJSON('http://site1:/myjson.json?format=jsoncallback=?',
 function(data) {
         alert(data.result);

 });

 $.ajax({
         url: 'http://site1:/myjson.json?format=json',
         dataType: 'jsonp',
         success: function(data) {
                 alert(data.result);
         }

 });


[jQuery] Re: cross domain getJSON nothing happens

2009-10-23 Thread jayQuery

didn't help...

the strange thing is that if I don't use jsonp (by using the callback
query), it works locally. But obviously won't work when in a cross
domain environment.

On Oct 23, 2:37 pm, MorningZ morni...@gmail.com wrote:
 See if this reply i made yesterday helps you out at all

 http://groups.google.com/group/jquery-en/browse_thread/thread/1525b2d...



[jQuery] Re: cross domain getJSON nothing happens

2009-10-23 Thread jayQuery

I see what you mean...

I thought it was that simple...
So I should generate my json via a server-language (like php) and echo
that callback as in the post you refered?
I'll try that and keep you posted.

On Oct 23, 3:22 pm, MorningZ morni...@gmail.com wrote:
 the strange thing is that if I don't use jsonp (by using the callback
 query), it works locally. But obviously won't work when in a cross
 domain environment. 

 It's not as easy as putting callback=? in the url.. you have to wrap
 the JSON you are generating in a function name so that jQuery can
 process it when it gets the response...

 cross domain jsonp absolutely for sure works, but you are not
 implementing it correctly... maybe show more code and what Firebug
 shows the response to be?

 On Oct 23, 9:50 am, jayQuery xaudio...@yahoo.co.uk wrote:

  didn't help...

  the strange thing is that if I don't use jsonp (by using the callback
  query), it works locally. But obviously won't work when in a cross
  domain environment.

  On Oct 23, 2:37 pm, MorningZ morni...@gmail.com wrote:

   See if this reply i made yesterday helps you out at all

  http://groups.google.com/group/jquery-en/browse_thread/thread/1525b2d...


[jQuery] Re: cross domain getJSON nothing happens

2009-10-23 Thread jayQuery

nice one!

this was the missing thing in my logic, I thought it was just a simple
call to a file, but I know now that that file has to be generated
according to the query.

thanks to all the replies!


[jQuery] Re: cross domain getJSON nothing happens

2009-10-23 Thread jayQuery

My code was ok, the missing semicolon was because of the copy/paste.

The problem was due to a faulty logic on my side and calling a static
json.

After these good people gave me more insight, I understood that the
way to achieve a cross domain call to a json, the json needs to be
built dynamically, writing the callback. After I did that, I got it to
work correctly.



On Oct 23, 4:02 pm, Chris ccshan...@gmail.com wrote:
 Hi, I was perusing the group looking to help a colleague with a
 similar problem.

 One thing I noticed here, and maybe this has no bearing at all, was
 the difference between the syntax in the first two posts:

 jayQuery wrote:

 $.getJSON('http://site1:/myjson.json?format=jsoncallback=?', {},
 function(data) { alert(data.result); })

 Mike Alsup wrote:

 $.getJSON('http://site1:/myjson.json?format=jsoncallback=?',
 function(data) {
         alert(data.result);

 });

 Those are different from one another. jayQuery passes an empty set of
 braces as second argument to getJSON, whereas Mike's passes the data
 function as the 2nd argument. Also, jay's overall wrapper function is
 not closed with a semicolon.

 Not sure if it has any bearing at all, just noting that one says his
 works and the other says his doesn't, but they are different.

 On Oct 23, 8:47 am, Mike Alsup mal...@gmail.com wrote:

   the json file named myjson.json (I've reduced its contents to its
   minimum for testing purposes and it validates in JSONLint):
   {result: true}

   The javascript:
   $.getJSON('http://site1:/myjson.json', {}, function(data) { alert
   (data.result); })

   I'm testing it in a local server (MAMP), and the code above works as
   expected.

   The problem is when I place the query that contains the callback (?
   format=jsoncallback=?), as I understand correctly, this is the way to
   get cross domain json:

   $.getJSON('http://site1:/myjson.json?format=jsoncallback=?', {},
   function(data) { alert(data.result); })

   It doesn't show the alert, either when in my local server or in an
   outside server.

   By looking at the firebug console/net panel, I can see that the
   response + json are correct, but the alert simply doesn't happen...
   All this because of the cross domain query.

   I've tried all the other ways ($.ajax(), $.get(), $.post()) and after
   adding the callback query nothing happens!
   I've even tryed adding the ( ) and doing an eval, but nothing...
   Anything I put inside the function(data) {} is ignored.

  Both of these methods work fine for me:

  $.getJSON('http://site1:/myjson.json?format=jsoncallback=?',
  function(data) {
          alert(data.result);

  });

  $.ajax({
          url: 'http://site1:/myjson.json?format=json',
          dataType: 'jsonp',
          success: function(data) {
                  alert(data.result);
          }

  });