2010-04-15 38 views
0

我有一个问题,我有一个局部视图,返回一些要显示的HTML。当使用jquery在页面上点击某物时调用它。问题是,无论我怎样称呼它,即使报告成功,我也会返回一个空字符串。这发生在我身上使用Chrome浏览器,违背我的本地机器。使用jquery调用MVC2部分视图返回空字符串

我的控制器看起来是这样的:

public ActionResult MyPartialView() 
{ 
    return PartialView(model); 
} 

我一直在使用获得()。员额()和.load()试图jQuery和所有具有相同的结果。以下是使用.post()的示例:

$.post(url, function (data) 
{ 
    alert(data); 
}); 

结果总是以空字符串的形式返回。我可以手动导航到浏览器中的部分视图,并找回所需的HTML。我用来调用它的URL我完全解决了,所以它看起来像“http://localhost/controller/mypartialview”,而不是使用我认为是原始问题的“/ controller/mypartialview”的相对路径。任何想法可能会导致这种情况?

回答

0

我想通了。起初我以为我必须从http://开始完全解析URL,但我不小心忘记了包含visual studio webserver使用的端口。它只是使用http://localhost/而不是http://localhost:2858/作为基础。一旦我改回它来使用相对路径,它开始工作。我猜jQuery根据当前页面的ajax方法中的url解析你的相对路径。

0

很难说出问题所在。如果您在通过浏览器访问相同的URL时有正确的html视图,这意味着您的服务器端很适合(使用HTTP GET)。

  • 那么我会说这个问题是在jQuery的使用。尝试将url编码到jQuery代码中,以确保jQuery获取正确的url。

    $.get( 'http://localhost/controller/mypartialview', function(data){ alert(data); } );

  • 你设置$.ajax全局选项? (并不是说你需要,也许你之前设置了一些东西,这就搞乱了你的新请求)

  • 确保在通过浏览器加入时不发送任何查询。这可能会使它通过浏览器而不是通过jQuery。

我绝对推荐你安装火狐萤火虫,做你的AJAX请求的更好的调试。

+0

我会试一试。我使用了Chrome开发人员工具,并在资源选项卡中查看了请求。它显示响应正确,但没有响应。非常奇怪。我想知道它是否与使用Visual Studio宿主进程而不是IIS有关。 – Jason 2010-04-15 17:22:04