загрузка jquery возвращает пустое, возможная проблема MVC 2? - PullRequest
0 голосов
/ 01 декабря 2009

У меня есть сайт, которому нужно получить данные из другого сайта, использующего asp.net MVC /

Данные для загрузки с этих страниц:
http://charity.hondaclassic.com/home/totaldonations
http://charity.hondaclassic.com/Home/CharityList

Это должно быть понятно, но по какой-то причине я получаю пустой ответ, вот мой JS:

<script>
     jQuery.noConflict();
     jQuery(document).ready(function($){
            $('.totalDonations').load('http://charity.hondaclassic.com/home/totaldonations');
        $('#charityList').load('http://charity.hondaclassic.com/home/CharityList');
     });

 </script>

в firebug я вижу, что запрос сделан и вернулся с ответом 200 OK, но ответ пуст, если вы просматриваете эти страницы, они работают нормально! Какого черта?

Вот действия контроллера с сайта MVC:

public ActionResult TotalDonations() {
            var total = "$" + repo.All<Customer>().Sum(x => x.AmountPaid).ToString();
            return Content(total);
        }

        public ActionResult CharityList() {
            var charities = repo.All<Company>();
            return View(charities);
        }

Кто-нибудь, пожалуйста, расскажите, какая глупая маленькая вещь, по которой я скучаю - это заняло у меня 5 минут, а прошло уже несколько часов!

Ответы [ 3 ]

2 голосов
/ 01 декабря 2009

Политика одинакового происхождения запрещает загрузку HTML с другого веб-сайта через AJAX. Правильный способ сделать это состоит в том, чтобы методы определяли, поступает ли запрос от AJAX и возвращают JSONP .

public ActionResult TotalDonations( string callback )
{
    var total = "$" + repo.All<Customer>().Sum(x => x.AmountPaid).ToString();
    if (!string.IsNullOrEmpty(callback))
    {
       return Content( callback + "( { total: " + total + " } );" );
    }
    else
    {
        return Content(total);
    }
}

...
$.getJSON('http://charity.hondaclassic.com/home/totaldonations?callback=?',
          function(data) {
              $('.totalDonations').html( data.total );
          });
0 голосов
/ 01 декабря 2009

Я закончил тем, что делал это на стороне сервера, чтобы избежать той же политики происхождения, упомянутой выше:

Dim totalDonations As String
    Dim charities As String

    Using Client As New System.Net.WebClient()
      totalDonations = Client.DownloadString("http://charity.hondaclassic.com/home/totaldonations")
      charities = Client.DownloadString("http://charity.hondaclassic.com/home/CharityList")
    End Using

работал как шарм.

0 голосов
/ 01 декабря 2009

в вашей общей сумме пожертвований отсутствует o всего

>  $('.totalDonations').load('http://charity.hondaclassic.com/home/ttaldonations');

должно быть

$('.totalDonations').load('http://charity.hondaclassic.com/home/totaldonations');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...