2011-09-21 91 views
0

閱讀了一些信息後,我認爲這應該起作用。 JS函數被調用並且jQuery動畫正在旋轉,但該操作未被髮布到。同樣,我會希望從文本輸入提供startDate和endDate,但現在即使是硬編碼也不起作用。感謝大家!使用jQuery發佈到控制器

控制器:

public class NewsController : Controller 
{ 
    [HttpPost] 
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search) 
    { 
    } 
} 

查看:

@using (Html.BeginForm()) 
{ 
    <a href="#" id="go_button">...</a> 
} 
<script type="text/javascript"> 
$('#go_button').click(function() { 
     $.post("/News/Search", { startDate: 'start', endDate: 'end'}); 
}); 

+1

因此,如果您在其中放置斷點,控制器操作從不會被調用?使用FireBug時會發生什麼?你能看到一個AJAX請求被髮送嗎? –

+0

摧毀Firebug並查看它是否實際嘗試POST或不。這樣,你就會知道它是否在客戶端或服務器上(希望) – Dave

+0

@DarinDimitrov很高興我們在同一頁上:) – Dave

回答

0

確保腳本或者設在DOM錨後或在document.ready包裝:

$(function() { 
    $('#go_button').click(function() { 
     var url = '@Url.Action("Search", "News")'; 
     $.post(url, { startDate: 'start', endDate: 'end' }, function() { 
      alert('success'); 
     }); 
     return false; 
    }); 
}); 

這應該起作用,至少應該調用你的動作。這是什麼行爲呢,它是否會拋出一個異常或東西是另一回事,但至少你應該進入它,並有適當的分配startDateendDate參數:

public class NewsController : Controller 
{ 
    [HttpPost] 
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search) 
    { 
     return Json(new { success = true }); 
    } 
} 
+0

靠近,謝謝。現在這個動作被調用,但是如果我刪除了它沒有調用的回調函數。我的控制器應該返回一個視圖「return View();」現在它不會這樣做。有什麼建議麼 ? – mishap

+0

@Chuchelo,刪除回調函數的東西看起來很奇怪。使用FireBug或Chrome開發者工具欄進行簽出,查看在刪除回調時是否發送了AJAX請求。如果你想返回一個視圖然後繼續,但是確保你有一個成功的回調來對結果做一些有用的事情,比如將它注入到DOM中,否則你的AJAX請求確實沒有任何用處。 –

+0

我很抱歉所有這些問題,但我是一個新手。 那麼成功的回調函數會將視圖插入到DOM中?如果視圖包含全新的頁面,我如何清除當前的DOM(文檔元素)並將View html插入到它中?我正在做這一切,因爲不同的按鈕會調用不同的操作,否則我會使用@@使用(Html.BeginForm(ControllerName))。非常感謝! – mishap

0

$。員額將只發布請求服務器 - 它不會自動更新你的視圖。

您需要包含一個成功函數,然後使用它將視圖插入到DOM中。

例如

嘗試這樣的事情在jQuery的

$(function() { 
    $('#go_button').click(function() { 
     var url = '@Url.Action("Search", "News")'; 
     $.post(url, { startDate: 'start', endDate: 'end' }, function() { 
      $('#result').html(data); 
     }); 
     return false; 
    }); 
}); 

這將張貼到你的行動,並把返回的視圖ID爲「結果」的元素中。

如果不包含佈局,則應該讓您的操作返回PartialView。

+0

謝謝,我已經明白了,但可以將返回的結果放入文檔元素中,以便我可以顯示整個視圖而不是部分視圖。順便說一句,原來的問題,我正在努力與這裏http://stackoverflow.com/questions/7508233/posting-same-form-to-different-actions-depending-on-button-clicked,不知道如果我可以要求看看,但這些問題來自哪裏。非常感謝你的幫助! – mishap