2012-03-07 2 views
0

В течение нескольких дней мы пытаемся найти решение, но мы не можем понять, почему этот код не работает.JQuery Ajax не работает

var bing_url='http://api.search.live.net/json.aspx?JsonType=callback&JsonCallback=?&Appid=[OurApp Id]&query='+keyword+'&sources=web'; 

$.ajax({ 
    type: "GET", 
    url: bing_url, 
    dataType:"jsonp", 
    success: function(response) 
    { 
    $("#result").html(''); 
    if(response.SearchResponse.Web.Results.length) 
    { 
     $.each(response.SearchResponse.Web.Results, function(i,data) 
     { 
     var title=data.Title; 
     var dis=data.Description; 
     var url=data.Url; 

     var finall="<div class='webresult'><div class='title'><a href='"+url+"'>"+title+"</a></div><div class='desc'>"+dis+"</div><div class='url'>"+url+"</div></div>"; 
     $("#result").append(final); // Result 

     }); 

     parentwin.document.getElementsByTagName("body").item(0).innerHTML += final; 
    } 
    else 
    { 
     $("#result").html("<div id='no'>No Results</div>"); 
    } 
    }    //success 
}); 

Этот скрипт будет вызываться с любой другой веб-страницы из IE. Он будет искать результаты с помощью bing с использованием bing api, а затем результаты будут добавлены к исходной странице.

Проблема:

Этот скрипт работает, когда мы непосредственно открыть его. Но он не работает, когда он вызывается с другой страницы.

+0

Есть ли только проблема в IE? Если вы посмотрите на консоль разработчика, увидите ли какие-либо запросы? – Manatok

+0

Также выполните некоторую отладку. Если вы замените обратный вызов успеха функцией() {alert (1)}, это сработает? Узнайте точную точку, в которой он терпит неудачу. – nicholaides

+0

Обратный вызов @nicholaides не показывает предупреждение, когда мы запускаем его с другой веб-страницы, иначе он работает и показывает результаты поиска bing. – user1254630

ответ

1

Скорее всего вы нарушаете same origin policy. Вы можете получить доступ только к файлам, которые расположены на том же сервере, что и скрипт.

Кроме того, из вики статьи о XmlHttpRequest объекта:

XMLHttpRequest подлежит ту же политику происхождения браузера в том, что, по соображениям безопасности, запросы будут успешными только если они сделаны на том же сервере, который служил оригинал веб-страница. Существуют альтернативные способы обхода этой политики, если это необходимо.

+0

@tresko спасибо за ответ. Но ** когда мы напрямую запускаем скрипт, он отлично работает **, но когда он вызывается с другой веб-страницы, он не работает, если его нарушение одной и той же политики происхождения тогда, как оно работает, когда оно выполняется непосредственно. – user1254630

+0

@ user1254630: * Этот скрипт работает, когда мы его открываем. Но он не работает, когда он вызывается с другой страницы. * .. вот что вы написали. –

+0

@tresko да точно – user1254630