我的问题是出于一些奇怪的原因,它似乎停留在页面控制器中,所以不是走出去进入ajax控制器,而是让它试图在页面控制器中沿着那条路走下去
第一次尝试
http://localhost:2185/Alpha/Ajax/GetBlah_Name/?lname=Ge&fname=He
第二次尝试
http://localhost:2185/Patient/~/Ajax/GetBlah_Name/?lname=Ge&fname=He
目标
http://localhost:2185/Ajax/GetBlah_Name/?lname=Ge&fname=He
调用jquery的页面按钮
<a style="margin-left: 310px;" href="javascript:void(0)" onclick="getBlah()"
class="button"><span>Lookup</span></a>
Jquery代码
第一次尝试
{
$.getJSON(callbackURL + 'Ajax/GetBlah_Name/?lname=' + $('#Surname').val() + '&fname=' + $('#FirstName').val(), null, GetResults)
}
第二次尝试
{
$.getJSON(callbackURL + '~/Ajax/GetBlah_Name/?lname=' + $('#Surname').val() + '&fname=' + $('#FirstName').val(), null, GetResults)
}
总之,我不知道为什么它不会突破控制器并进入Ajax控制器,就像它在使用第一个尝试解决方案时所做的所有其他项目中一样。
答案 0 :(得分:1)
您的AJAX调用存在一些问题:
以下是我建议您改进代码的方法:
// Always use url helpers when dealing with urls in an ASP.NET MVC application
var url = '@Url.Action("GetBlah_Name", "Ajax")';
// Always make sure that your values are properly encoded by using the data hash.
var data = { lname: $('#Surname').val(), fname: $('#FirstName').val() };
$.getJSON(url, data, GetResults);
甚至更好。将硬编码锚点替换为已在其href属性中包含查找URL的锚点(当然这将由url帮助程序生成):
<a id="lookup" href="Url.Action("GetBlah_Name", "Ajax")" class="button">
<span>Lookup</span>
</a>
然后在一个单独的javascript文件中不引人注意地AJAX化它:
$(function() {
$('#lookup').click(function() {
var data = { lname: $('#Surname').val(), fname: $('#FirstName').val() };
$.getJSON(this.href, data, GetResults);
return false;
});
});
现在,您的网址的外观将完全取决于您在Application_Start方法中设置路线的方式。您的观点和javascripts现在完全不可知,如果您决定更改路线模式,则无需触摸 jaavscript或观看。
答案 1 :(得分:1)
似乎你想在〜/ Ajax上调用一个控制器。是吗?如果是,您应该使用此代码:
$.getJSON(callbackURL + '/Ajax/GetBlah_Name/?lname=' + $('#Surname').val() + '&fname=' + $('#FirstName').val(), null, GetResults)
<强>更新强> 这适用于您的Q,但完整的解决方案是@ Darin Dimitrov 的答案。我建议你也使用它。
<强> UPDATE2 强>
~
是一个特殊的角色,只有ASP.NET可以使用它!所以http
不理解它。如果你用url
开始你的Ajax
,那么url
将从你现在的位置被引用(我的英语不好,我无法解释好) ,参见示例plz)。例如,你在这里:
http://localhost:2222/SomeController/SomeAction
在此页面中创建链接时,使用此href
:
href="Ajax/SomeAction"
将呈现为
http://localhost:2222/SomeController/Ajax/SomeAction
但是,当url
以/
开头时,您将其引用到网站的根目录:
href="/Ajax/SomeAction"
将是:
http://localhost:2222/Ajax/SomeAction
此致