$ .getJSON не работает через домен со мной? - PullRequest
1 голос
/ 21 сентября 2011

следующий код не работает со мной:

$.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);
             }
         });

И вот URL, который я передаю: 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]
 ]
}

Что я делаю не так?!

1 Ответ

1 голос
/ 21 сентября 2011

getJSON аналогичен любому другому AJAX -запросу, затронутому same-origin-policy , который запрещает выполнение междоменных ajax-запросов.

вы можете обойти это, выполнив JSONP .

РЕДАКТИРОВАТЬ:
я только что прочитал getJSON должен сделать автоматический откатв jsonp, если URL содержит callback -параметр:

JSONP

Если URL содержит строку «callback =?»(или аналогичный, как определено серверным API), запрос обрабатывается как JSONP.См. Обсуждение типа данных jsonp в $ .ajax () для получения более подробной информации.

, поскольку у вас есть jsoncallback -параметр, все это может работать, но резонанс, который вы опубликовали, не 't использовать эту функцию обратного вызова (возможно, потому что вы просто даете ? в качестве имени обратного вызова), так что в этом может быть вся проблема: опубликовать имя функции в качестве обратного вызова и реализовать эту функцию на вашей стороне.

...