2009-04-17 18 views
9

Nie mogę sprawić, aby mój plik JSON działał, gdy pobierze go z innej domeny przy użyciu JQuerys getJSON. Umieściłem część wywołania zwrotnego pod koniec adresu URL, ale nadal nie mam radości. Firebug mówi mi jego przekrój problem domeny, która wydaje się mieć sens jakbym umieścić plik json lokalnie poniższy kod (wyłączając? Jsoncallback =działa poprawnie)Problemy z jquery getJSON cross domain

Herezje część Jquery

$.getJSON("http://anotherdomain/js/morearticles.js?jsoncallback=?", 
    function(json){ 
     if (show5More.nextSetCount < json.items.length) { // Check not on last group of data 
      $('#lineupswitch li').hide(); // Hide the existing items  
      $.each(json.items, function(key,value){ // Loop over the returned data from the json file 
       if (key === show5More.nextSetCount) { // If the itteration is equal to the datablock continure 
        show5More.nextSetCount = show5More.nextSetCount + 1; // 
        $(value).each(function(index) { 
         if((index % 2) == 0) { 
          $('<li class="even ' + this.cname +'"><a href="' + this.href + '" class="lineup-thumb"><img src="' + this.thumbimg + '" /></a><h3><a href="' + this.href + '">' + this.titletext + '</a></h3><p>' + this.paratext + '</p></li>').appendTo("#lineupswitch"); 
          } else { 
           $('<li class="odd ' + this.cname +'"><a href="' + this.href + '" class="lineup-thumb"><img src="' + this.thumbimg + '" /></a><h3><a href="' + this.href + '">' + this.titletext + '</a></h3><p>' + this.paratext + '</p></li>').appendTo("#lineupswitch");        
          } 
        }); 
        return false; 
       } 
      }); 
     } 
    });   
} 

I JSON, który sprawdziłem.

 
{ 
    "items": [ 
      [ 
       { 
        "href": "/edinburgh/video/news-090415-s2-squalor-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19721015001_asset-1239819553334.jpg?pubId=1486976045", 
        "titletext": "Cannabis plants found in house with neglected children", 
        "paratext": "A court has heard four young children lived in", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090414-s2-waverley-station-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19537855001_asset-1239732920496.jpg?pubId=1486976045", 
        "titletext": "Multi-million pound revamp for Waverley Station", 
        "paratext": "Edinburgh's Waverley Station is set for a", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-s2-natal-20090408/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18948154001_asset-1239206353135.jpg?pubId=1486976045", 
        "titletext": "Stillbirth charity on the road to raise awareness", 
        "paratext": "SANDS Lothian are hoping to highlight their", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090407-l2-rbs/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18827378001_asset-1239110600777.jpg?pubId=1486976045", 
        "titletext": "Thousands of jobs to go at Royal Bank of Scotland", 
        "paratext": "Edinburgh-based bank to cut 4,500 positions in the", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090415-s2-squalor-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19721015001_asset-1239819553334.jpg?pubId=1486976045", 
        "titletext": "1", 
        "paratext": "A court has heard four young children lived in", 
        "cname": "lastlineup" 
       }    
      ], 

      [ 
       { 
        "href": "/edinburgh/video/news-090415-s2-squalor-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19721015001_asset-1239819553334.jpg?pubId=1486976045", 
        "titletext": "1", 
        "paratext": "A court has heard four young children lived in", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090414-s2-waverley-station-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19537855001_asset-1239732920496.jpg?pubId=1486976045", 
        "titletext": "2", 
        "paratext": "Edinburgh's Waverley Station is set for a", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-s2-natal-20090408/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18948154001_asset-1239206353135.jpg?pubId=1486976045", 
        "titletext": "Stillbirth charity on the road to raise awareness", 
        "paratext": "3", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090407-l2-rbs/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18827378001_asset-1239110600777.jpg?pubId=1486976045", 
        "titletext": "Thousands of jobs to go at Royal Bank of Scotland", 
        "paratext": "4", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090407-l2-rbs/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18827378001_asset-1239110600777.jpg?pubId=1486976045", 
        "titletext": "Thousands of jobs to go at Royal Bank of Scotland", 
        "paratext": "Edinburgh-based bank to cut 4,500 positions in the", 
        "cname": "lastlineup" 
       }    

      ] 

     ] 
} 

{ 
    "items": [ 
      [ 
       { 
        "href": "/edinburgh/video/news-090415-s2-squalor-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19721015001_asset-1239819553334.jpg?pubId=1486976045", 
        "titletext": "Cannabis plants found in house with neglected children", 
        "paratext": "A court has heard four young children lived in", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090414-s2-waverley-station-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19537855001_asset-1239732920496.jpg?pubId=1486976045", 
        "titletext": "Multi-million pound revamp for Waverley Station", 
        "paratext": "Edinburgh's Waverley Station is set for a", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-s2-natal-20090408/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18948154001_asset-1239206353135.jpg?pubId=1486976045", 
        "titletext": "Stillbirth charity on the road to raise awareness", 
        "paratext": "SANDS Lothian are hoping to highlight their", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090407-l2-rbs/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18827378001_asset-1239110600777.jpg?pubId=1486976045", 
        "titletext": "Thousands of jobs to go at Royal Bank of Scotland", 
        "paratext": "Edinburgh-based bank to cut 4,500 positions in the", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090415-s2-squalor-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19721015001_asset-1239819553334.jpg?pubId=1486976045", 
        "titletext": "1", 
        "paratext": "A court has heard four young children lived in", 
        "cname": "lastlineup" 
       }    
      ], 

      [ 
       { 
        "href": "/edinburgh/video/news-090415-s2-squalor-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19721015001_asset-1239819553334.jpg?pubId=1486976045", 
        "titletext": "1", 
        "paratext": "A court has heard four young children lived in", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090414-s2-waverley-station-edinburgh/", 
        "thumbimg": "http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_19537855001_asset-1239732920496.jpg?pubId=1486976045", 
        "titletext": "2", 
        "paratext": "Edinburgh's Waverley Station is set for a", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-s2-natal-20090408/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18948154001_asset-1239206353135.jpg?pubId=1486976045", 
        "titletext": "Stillbirth charity on the road to raise awareness", 
        "paratext": "3", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090407-l2-rbs/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18827378001_asset-1239110600777.jpg?pubId=1486976045", 
        "titletext": "Thousands of jobs to go at Royal Bank of Scotland", 
        "paratext": "4", 
        "cname": "" 
       }, 
       { 
        "href": "/edinburgh/video/news-090407-l2-rbs/", 
        "thumbimg":"http://brightcove.vo.llnwd.net/d7/unsecured/media/1486976045/1486976045_18827378001_asset-1239110600777.jpg?pubId=1486976045", 
        "titletext": "Thousands of jobs to go at Royal Bank of Scotland", 
        "paratext": "Edinburgh-based bank to cut 4,500 positions in the", 
        "cname": "lastlineup" 
       }    

      ] 

     ] 
} 

Odpowiedz

11

Nie zwraca funkcji zwrotnej, więc nie można jej ocenić.

Powinieneś mieć coś takiego w kodzie PHP:

echo $_GET['callback'] . '(' . $jsonData . ');'; 

Hah, och przepraszam, jeśli były przy użyciu php, to byłoby inaczej.

Chcesz tego w swoim pliku javascript, a zamiast tego będziesz musiał podać zakodowane na sztywno, ponieważ jest to lista statyczna.

Patrz: http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

12

altCognito jest poprawna. Oto przykład roboczych:

umieścić to w górnej części strony, z którego dzwonisz, w

$.getJSON("http://www.yourotherdomain.com/testcross.php?jsoncallback=?", 
    function(data){ 
     $('body').html(data.name).css("color","green"); 
    }); 

i php że wróci rzeczy:

$data = '{"name" : "hello world"}'; 
    echo $_GET['jsoncallback'] . '(' . $data . ');'; 
Powiązane problemy