2013-01-30 5 views
0

noob здесь. Я не могу получить свое предупреждение, чтобы показать этот код. Может кто-то, пожалуйста, укажите мне в правильном направлении, чтобы сделать это притяжение из корма json? Заранее спасибо.JSON-P + RESTful API

<html> 
<head> 
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"> </script> 
<title>Test</title> 
</head> 
<body> 
<script type="text/javascript"> 
jQuery.getJSON("http://api.shoplocal.com/api/2012.1/json/getpromotions.aspx?campaignid=86107c2cdcc39561&citystatezip=46225" + "&campaignid=",   function(feed) { 
    alert("Symbol: " + feed.content.collection.data.image); 
}); 
</script></body> 
</html> 

Вот JSON:

{ 
    "content": { 
     "collection": { 
      "data": { 
       "code": "RC-130127", 
       "customimagedescription": "", 
       "customimagelocation": "", 
       "displayorder": "0", 
       "featuredpromotion": "N", 
       "identifier": "01\/27 Circular", 
       "image": "http:\/\/akimages.shoplocal.com\/dyn_rppi\/140.0.90.0\/RobertsCamera\/large\/130127_Pg1_cqu82.jpg", 
       "postenddate": "2\/2\/2013 12:00:00 AM", 
       "poststartdate": "1\/27\/2013 12:00:00 AM", 
       "previewenddate": "", 
       "previewstartdate": "", 
       "promotionchildtypeid": "", 
       "promotionchildtypename": "", 
       "promotionid": "85347", 
       "promotionmessage": "", 
       "retailerid": "12847", 
       "retailername": "Roberts Camera", 
       "saleenddate": "2\/2\/2013 12:00:00 AM", 
       "salestartdate": "1\/27\/2013 12:00:00 AM", 
       "tag": "RC-130127", 
       "title": "01\/27 Circular", 
       "typeid": "1", 
       "vo": "promotion" 
      }, 
      "vo": "promotion" 
     }, 
     "date": "1\/30\/2013 12:28:52 PM" 
    } 
} 
+1

Вы можете вставить json здесь. – Jai

+0

Я очень сомневаюсь, что все возвращенные данные не содержат массивов и являются только объектами. Когда вы выполните console.log() возвращаемое значение, то сколько из них говорит Array [1]? – Ohgodwhy

ответ

0

Из соображений безопасности вы не в состоянии назвать ресурс, используя функциональные возможности Ajax, как (getJSON, AJAX, должность, получить) вне области приложения ,

Посмотрите на свою консоль javascript, чтобы увидеть проблему.

How to call external url in jquery?

Эта ссылка прояснит все.

http://en.wikipedia.org/wiki/Same_origin_policy

1

Добавить &callback=? в конце вашего URL, чтобы вызвать JSONP, в противном случае вы получите сообщение об ошибке crossdomain XMLHttpRequest:

$.getJSON("http://api.shoplocal.com/api/2012.1/json/getpromotions.aspx?campaignid=86107c2cdcc39561&citystatezip=46225&campaignid=&callback=?", 
       function(feed) { 
    alert("Symbol: " + feed.content.collection.data.image); 
}); 

ВИДЕТЬ JSONP section из документации getJSON для получения дополнительной информации.

Я также заметил, что вы втягиваете jQuery v1.3.2. Это решение может не работать для версии, старой, but it does work with newer versions.

+0

Это работает! Да, мне нужно обновить фрагменты кода. (v1.3.2 был в моей lib в течение длительного времени.) Спасибо за вашу помощь Самсванч! :) – persphone80

0

Для получения подробной информации о том, почему вы не должны рассматривать JSONP для использования с якобы «RESTful» API, см. my answer to a related question. Короче говоря, вместо этого используйте CORS.