2011-10-19 60 views
0

我正在创建一个MVC web应用程序,我想通过jQuery.load()通过AJAX加载一些页面内容。我有这个工作,但问题是我必须传递整个URL,包括http://部分,否则它将无法工作。换句话说,相对URL路径失败。jQuery load()和ASP.NET MVC URL路径

所以,这工作

$('#params').empty().load('http://localhost:58438/home/getsurveydata #params', val); 

失败

$('#params').empty().load('/home/getsurveydata #params', val); 

每一个例子,我在网络上看到似乎表明,第二种形式应该只是罚款。有什么想法吗?

FWIW我试着删除'val'部分和#params部分,但这没有什么区别。它甚至没有击中控制器。就像我说的那样,它是以第一种格式编写的,URL是唯一的区别。我错过了什么?

+0

你能启用萤火虫网络监视器,看看是否提出请求吗?其他一些JavaScript错误可能正在停止通话。 –

回答

0

没有道理给我,为什么它不工作,但最差的情况下你可以把它的动态,通过使用这样的:

$('#params').empty().load('http://@HttpContext.Current.Request.Url.Authority/home/getsurveydata #params', val);

2

如何使用HTML5数据 - *属性在#params容器上:

<div id="params" data-url="@Url.Action("getsurveydata", "home")"></div> 

现在您的单独的JavaScript可以这样写:

var p = $('#params'); 
p.empty().load(p.data('url') + ' #params', val); 

无论应用程序的部署位置如何,它都可以工作,并且避免了对任何URL进行硬编码,因为它依赖于url helper来生成它,因此如果您决定在Application_Start中更改路由布局,则无需修改UI部分的任何内容。