2011-09-21 52 views
1

下面的代碼不和我一起工作:

$.getJSON(url, 
     function (data) { 
      if (data.results[0]) { 
       alert('hi'); 

       $.each(data["Rows"], function (i, el) { 
        $("#target").append("<a href=\"" + el[1] + "\">" + el[2] + "</a><br />"); 
       }) 

       //container.html(data); 
      } else { 
       var errormsg = '<p>Error: could not load the data.</p>'; 
       container.html(errormsg); 
      } 
     }); 

,這裏是我通過網址:http://www.somedomain.com/page.aspx?sid=6BB5B614-4C43-45DF-BA7D-47A71F0753EF&jsoncallback=? 這裏是返回的JSON

{"Columns":["id","Article_Url","Article_Title","date","num"], 
"Rows":[ 
    ["5bb93b83-d129-4ca9-8999-ed54910b824d","97.74.67.146/test.html","test","\/Date(1316189236173)\/",25], 
    ["82d62b61-d96b-489a-ae91-008b897db553","97.74.67.146/testx.html?xx=x","test","\/Date(1316256259490)\/",11], 
    ["97aaf346-1146-429e-bc5a-fcfa4b2d934b","97.74.67.146/testx.html","test","\/Date(1316255702510)\/",4], 
    ["2fea1222-e254-4db9-a68e-5129a0d87e8e","97.74.67.146/qn_news_story_s.asp?storyid=1093442005","Oman invests USD3.8b in constructing dry dock","\/Date(1316188504010)\/",2], 
    ["82fe900d-eefe-4540-87a4-1fe6057234a7","http://www.menafn.com/qn_news_story.asp?StoryId={83510500-a24b-4f87-9bf1-3985134ee4b6}","Title 1","\/Date(1315411910897)\/",1], 
    ["217f8e33-8723-4de3-9afc-438d7172f90e","http://www.menafn.com/qn_news_story_s.asp?StoryId=1093437815&src=MOEN","Title 1","\/Date(1315411969900)\/",1] 
] 
} 

我在做什麼錯??

+2

服務器是否處理參數'jaconcallback = someFunctionName'?響應應該是類似於'someFunctionName({「Columns」:....});' – Mic

+0

是的,它處理參數jaconcallback = someFunctionName – Cassini

+0

@Cassini:但在你的例子url中,你沒有給函數 - 名稱作爲回調 – oezi

回答

1

getJSON就像其他任何AJAX-受same-origin-policy影響的請求,它禁止進行跨域的ajax請求。

你可以解決這個問題JSONP

編輯:
我剛纔讀getJSON應該做一個自動回退到JSONP如果URL中包含一個callback -parameter:

JSONP

如果URL中包含字符串「回調=?」 (或類似的,由服務器端API定義的 ),請求將被視爲JSONP。有關更多詳細信息,請參閱$ .ajax()中有關jsonp數據類型的 討論。

,因爲你有一個jsoncallback -parameter這一切可能工作 - 但你張貼的resonse不使用此回調函數(也許是因爲你剛剛給?回調名),所以這可能成爲整個問題:將函數名稱作爲回調函數,並在您身邊實現該函數。