在jQuery中调用错误的控制器问题ajax调用
我的问题是由于一些奇怪的原因,它似乎停留在页面控制器,所以不是走出去并进入ajax控制器,我试图沿着页面中的路线控制器在jQuery中调用错误的控制器问题ajax调用
1日试
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代码
1日试
{
$.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控制器,就像我在使用第一次尝试解决方案时完成的所有其他项目中一样。
看来你想在〜/ Ajax调用一个控制器。是吗?如果是的话,你应该使用这个代码:
$.getJSON(callbackURL + '/Ajax/GetBlah_Name/?lname=' + $('#Surname').val() + '&fname=' + $('#FirstName').val(), null, GetResults)
UPDATE: 这将为您的问与答工作,但完整的解决方案是@达林季米特洛夫的答案。我建议你也使用它。
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
问候
那么这固定它,不知道这个“/”是如何去除的,但它不在我的另一个项目中,因此上帝知道那里发生了什么。我曾尝试过“〜/”,因为我在其他路线中使用它来摆脱一切。 – Myzifer
更新答案以获得更多解释。 –
有几个问题与你的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);
甚至更好。
<a id="lookup" href="Url.Action("GetBlah_Name", "Ajax")" class="button">
<span>Lookup</span>
</a>
,然后在一个单独的JavaScript文件悄悄AJAXify它:一个将已经包含在它的href属性查询网址(这当然会通过URL辅助生成)更换您的硬编码锚
$(function() {
$('#lookup').click(function() {
var data = { lname: $('#Surname').val(), fname: $('#FirstName').val() };
$.getJSON(this.href, data, GetResults);
return false;
});
});
现在您的网址如何看起来完全取决于您如何在Application_Start方法中设置路线。您的意见和JavaScript现在完全不可知,如果您决定更改路线模式,则无需touch jaavscript或views。
thx,我一定会尽快尝试这一点,因为我找到一个免费秒(试图让明天完成所有这些项目的开发,到目前为止,我不认为我是gona,但希望继承人) – Myzifer
Only原因我无法直接调用GetBlah_Name,它现在在getBlah函数中进行3次检查,以确定哪些数据已被输入,然后根据提供的数据,它会更改它所做的ajax调用。例如,如果提供了一个Id号码,那么它就更加准确和具体,因此它将按照该号码进行搜索,而不是通过名称或其他并不总是有数据的Id字段进行搜索。 – Myzifer
@Darin Dimitrov - 嗨,你能帮我解决这个问题吗? http://stackoverflow.com/questions/7508241/ef-4-1-code-first-how-to-load-related-data-parent-child-grandchild - 感谢您的任何想法和帮助 –
什么是'callbackURL'?你的路由定义是怎样的? –
你试过'$ .getJSON('/ Ajax/GetBlah /?lname ...)'吗? –