2013-09-15 3 views
2

Я работаю над приложением, которое генерирует код javascript, который отображает виджет на веб-сайте. Когда данные передаются через форму виджетов, он отправляет данные на сервер с помощью функции jQuery ajax.отправить данные на удаленный сервер с помощью jquery ajax

Проблема в том, что я использую успешный обратный вызов, который никогда не будет запущен, если я поместил виджет на веб-сайт, который находится на другом хосте. Я знаю, что из-за того, что javascript предотвращает междоменную ajax и что я должен использовать jsonp, но мне интересно, почему событие успеха не запускается, если данные отправляются на сервер обычно?

Вот код:

$.ajax({ 
    type: 'POST', 
    url: report_url, 
    data: $(form).serialize(), 
    success: function() { 
    alert("success called!"); 
    } 
}); 

Что будет лучший способ сделать то же самое с JSONP? Я немного смущен, если я должен сделать это с помощью jsonp и как, поскольку для этого требуется определить параметр обратного вызова jsonp.

Спасибо за помощь

ответ

0

Ну, вы можете попробовать это с помощью JSONP:

Живая демонстрация:http://jsfiddle.net/5CUk2/

(Пожалуйста, проверьте браузер консоли)

$(function() { 

    //Example using flickr API 
    var diffDomainUrl = 'http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=mycallback&tags=monkey&tagmode=any&format=json'; 

    $('#jsonpbtn').on('click', function() { 
     $.ajax({ 
      url: diffDomainUrl, 
      dataType: 'jsonp', 
      data: {}, 
      success: function (data, textStatus) { 
       console.log(textStatus); 
       console.log(data); 
      }, 
      jsonpCallback: 'mycallback' 
     }); 
    }); 

}); 

Кстати, вы можете попробовать другие возможные «пути», чтобы сделать cross-domain просьбу взглянуть на это, возможно, может помочь:

http://usejquery.com/blog/jquery-cross-domain-ajax-guide

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