我有一个问题,我有一个部分视图,返回一些要显示的HTML。当使用jquery在页面上单击某些内容时调用它。问题在于,无论我怎么称呼它,我都会回来一个空字符串,即使它报告成功。这种情况发生在使用Chrome的情况下,与我的本地机器相反。
我的控制器看起来像这样:
public ActionResult MyPartialView()
{
return PartialView(model);
}
我使用.get(),. post()和.load()尝试了jquery,并且都具有相同的结果。以下是使用.post()的示例:
$.post(url, function (data)
{
alert(data);
});
结果总是以空字符串形式返回。我可以手动导航到浏览器中的局部视图,然后返回所需的HTML。我用来调用它的URL我完全解决了它看起来像“http://localhost/controller/mypartialview”而不是使用“/ controller / mypartialview”的相对路径,我认为这是原始问题。知道可能导致这种情况的原因吗?
答案 0 :(得分:0)
很难说出问题所在。如果您在通过浏览器访问相同的URL时拥有正确的html视图,这意味着您的服务器端可以使用(具有HTTP GET)。
那么我会说问题在于jQuery的用法。尝试将url硬编码到jQuery代码中,以便确保jQuery获得正确的URL。
$.get(
'http://localhost/controller/mypartialview',
function(data){ alert(data); }
);
您是否设置了$.ajax
全局选项? (不是你需要的,也许你以前设置了一些东西,这会弄乱你的新请求)
确保在通过浏览器加入时不发送任何查询。这可能使它通过浏览器而不是通过jQuery。
我绝对建议您安装 Firefox 和 Firebug ,以便更好地调试您的AJAX请求。
答案 1 :(得分:0)
我明白了。起初我以为我必须完全从http://开始解析URL,但我不小心忘记包含visual studio webserver正在使用的端口。它只使用http://localhost/而不是http://localhost:2858/作为基础。一旦我改回来使用相对路径,它就开始工作了。我猜jquery根据ajax方法中当前页面的url为你解析相对路径。