Chrome和Firefox没有使用jquery load()传递查询字符串值

时间:2012-01-06 20:13:42

标签: jquery ajax asp.net-mvc

在使用一些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 ...

在load()上调用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”]会在加载时给我一个值 从IE(8)开始,在Chrome(16.0)和FireFox(8)中,我将获得传入的值“”。有没有人知道一个浏览器为什么按预期工作的线索或解决方案,另外两个在传递查询字符串值时失败了?

(注意:大多数变量只是我尝试隔离问题并一次分解一个。随机数附加以防有一些缓存。我们只关心变量'querystringValue'本身。)

1 个答案:

答案 0 :(得分:0)

尝试正确编码您的请求参数的网址:

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);
    } 
});
相关问题