2011-09-22 43 views
0

我的問題是由於一些奇怪的原因,它似乎停留在頁面控制器,所以不是走出去並進入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控制器,就像我在使用第一次嘗試解決方案時完成的所有其他項目中一樣。

+0

什麼是'callbackURL'?你的路由定義是怎樣的? –

+1

你試過'$ .getJSON('/ Ajax/GetBlah /?lname ...)'嗎? –

回答

1

看來你想在〜/ 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 

問候

+0

那麼這固定它,不知道這個「/」是如何去除的,但它不在我的另一個項目中,因此上帝知道那裏發生了什麼。我曾嘗試過「〜/」,因爲我在其他路線中使用它來擺脫一切。 – Myzifer

+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); 

甚至更​​好。

<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。

+0

thx,我一定會盡快嘗試這一點,因爲我找到一個免費秒(試圖讓明天完成所有這些項目的開發,到目前爲止,我不認爲我是gona,但希望繼承人) – Myzifer

+0

Only原因我無法直接調用GetBlah_Name,它現在在getBlah函數中進行3次檢查,以確定哪些數據已被輸入,然後根據提供的數據,它會更改它所做的ajax調用。例如,如果提供了一個Id號碼,那麼它就更加準確和具體,因此它將按照該號碼進行搜索,而不是通過名稱或其他並不總是有數據的Id字段進行搜索。 – Myzifer

+0

@Darin Dimitrov - 嗨,你能幫我解決這個問題嗎? http://stackoverflow.com/questions/7508241/ef-4-1-code-first-how-to-load-related-data-parent-child-grandchild - 感謝您的任何想法和幫助 –