2013-07-21 2 views
1

У меня небольшая проблема. Я подключаюсь к веб-сервису, который предоставляет результаты JSON и пытается проанализировать результаты. Код работает нормально на моем localhost (wamp server), но код не запускается ни на одной из учетных записей веб-хостинга, которые я пробовал. Вот URL предоставление JSONgetJson не работает на веб-хостинге

http://mohamedbadr.com/webservice/list.php 

А вот мой файл, который пытается получить результаты:

http://contestlancer.com/web/getList.php 

Вот код из GetList файла:

<!DOCTYPE HTML> 
<html> 
<head> 
<title>Hotel Promotion List</title> 
<script type="text/javascript" src="jquery.js"></script> 
<link rel="stylesheet" type="text/css" href="style.css"/> 
<script type="text/javascript"> 
function getList() 
{ 
var i=0; 

var ntable="<table><thead><tr><th>Image</th><th>Name</th><th>Rating</th><th>Highlights</th></tr></thead><tbody>"; 
$.getJSON("http://mohamedbadr.com/webservice/list.php", function(data){ 
    $.each(data.promos, function(key, value) { 

ntable+="<tr><td><a href='promotion.php?id="+value.promo.id+"'><img src='"+value.promo.image+"' height='100' width='150'/></a></td><td><a href='promotion.php?id="+value.promo.id+"'>"+value.promo.name+"</a></td><td> "+value.promo.stars+"</td><td> "+value.promo.highlights+"</td></tr>";  
}); 

ntable+="</tbody></table>"; 
    $("#content").html(ntable); 
}); 


} 
</script> 
</head> 
<body onLoad="getList()"> 
<div id="wrapper"> 

    <div id="content"></div> 

</div> 


</body> 
</html> 

Наиболее вероятно, URL не открывается, что является решением этого? Любая помощь будет принята с благодарностью

+1

Вы проверили подходящие заголовки [CORS] (http://de.wikipedia.org/wiki/Cross-Origin_Resource_Sharing)? Если они не установлены, вы не сможете получить ответ из другого домена ... – Sirko

+0

@Sirko жаль, что я совершенно не знаком с json, какую часть кода мне нужно изменить? –

+0

Вы ничего не можете изменить, если только вы не владеете сайтом, из которого вы получаете json. Они должны установить дополнительный заголовок для запросов перекрестного происхождения. См. Связанную запись в Википедии. – Sirko

ответ

2

Это не работает, потому что вы делаете запрос на перекрестный домен. Домен A до домена B.

Попробуйте добавить это к http://mohamedbadr.com/webservice/list.php перед печатью любого выхода.

header('Access-Control-Allow-Origin: http://contestlancer.com'); 
+0

благодарю вас за ответ. Похож на меня. Вернусь к вам после добавления этой строки :) –

0

Как упоминалось в Nadh, это связано с кросс-доменным запросом. Подробнее @HTTP Access Control. Понимание Same Origin Request.

Поскольку вы используете JQuery getJson(), вы можете альтернативно попробовать этот подход

var url = "http://mohamedbadr.com/webservice/list.php"; 
$.getJSON(url + "?callback=?", null, function(data) { 
    ... Success Logic here... 
}); 

?callback=? в конце URL, будет конвертировать ваш запрос в JSONP. И если вы удалите его, это будет простой вызов Ajax.

Понимание JSONP

- Эрвинд.

+0

does not work friend –

Смежные вопросы