Chrome и Firefox не передают значение строки запроса с помощью jquery load () - PullRequest
1 голос
/ 07 января 2012

Работая с некоторыми jQuery ajax, я столкнулся с этой проблемой, когда Chrome и Firefox не передают значение строки запроса с помощью jquery load ()

Вот разметка:

<a href="#" class="abort-invitation" id='abort-invitation-103'>abort</a> 

Сценарий jquery:

$('a.abort-invitation').live(
  {
     click: function (e) {
     var $link = $(this);
     var querystringValue = $link.html();
     var randomnumber = new Date().getTime();
     var urlPath = '<%:Url.Action("AbortInvitation", "Evaluation") %>' + '?
                  inviteState=' + querystringValue + '&ran=' + randomnumber; 
     var $modal = GetModal();
     $modal.load(urlPath);
    // more javascript ...

Метод MVC, вызываемый при загрузке ():

public PartialViewResult AbortInvitation()
{
  ViewData["inviteState"] = Request.QueryString["inviteState"];
  var randomValue = Request.QueryString["ran"];
  return PartialView("~/views/evaluation/controls/AbortOrReactivate.ascx");
}       

При отладке в Visual Studio ViewData ["InviteState"] выдаст мне значение, когдаload запускается из IE (8), а в Chrome (16.0) и FireFox (8) я получу "" в качестве переданного значения.У кого-нибудь есть подсказка или решение о том, почему один браузер работает должным образом, а два других не могут передать значение строки запроса?

(Примечание: большинство переменных - просто моя попытка изолировать проблемуи разбить вещи по одному. Случайное число добавляется в случае, если происходит некоторое кэширование. Мы действительно заботимся только о самом var 'querystringValue'.)

1 Ответ

0 голосов
/ 07 января 2012

Попробуй правильно URL-кодировку параметров твоего запроса:

var urlPath = '<%: Url.Action("AbortInvitation", "Evaluation") %>';
var $modal = GetModal();
$modal.load(urlPath, {
    inviteState: querystringValue,
    ran: randomnumber
});

Также в jQuery есть встроенный механизм отключения кэша, поэтому эта переменная ran не нужна:

var urlPath = '<%: Url.Action("AbortInvitation", "Evaluation") %>';
$.ajax({
    url: urlPath,
    type: 'GET',
    cache: false,
    data: { inviteState: querystringValue },
    success: function(result) {
        var $modal = GetModal();
        $modal.html(result);
    } 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...