2012-03-02 70 views
1

我很努力地用Ajax返回視圖或部分視圖。無論何時我將返回類型更改爲不是JS的事件,ajax命令都不會成功。我需要返回部分視圖,因爲我想返回大量數據。Ajax成功返回視圖時

這是我當前的代碼:

(控制器)

[HttpPost] 
    public ActionResult AjaxTestController(string Input) 
    { 
     string Results = Input + " -- TestTestTest"; 

     return PartialView("Test", Results); 
     //return new JsonResult() { }; 
    } 

(查看)

function AjaxTest() { 
alert("test"); 
$.ajax({ 
    type: "POST", 
    url: "Home/AjaxTestController", 
    data: "Input=Test11111",   
    success: function() { 
     alert("Success!"); 
    } 
}); 

謝謝!

回答

0

可以使用.post的$命令爲:

function AjaxTest() { 
alert("test"); 
$.post({ 
    url: "Home/AjaxTestController", 
    data: "Input=Test11111",   
    success: function (response) { 
     alert(response); 
    } 
}); 
0

嘗試以下操作:

$(function() { 
    $('#submit').live('click', function() { 
     AjaxTest(); 
    }); 
}); 

function AjaxTest() { 
    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("AjaxTestController", "Home")', 
     data: { Input: "Test - " + new Date() }, 
     success: function (data) { 
      $('#partialResult').html(data); 
     }, 
     error: function (xhr, err) { 
      alert(xhr.responseText); 
     } 
    }); 
}; 

您的視圖中,並確保你有你的目標DIV設置爲偏被填充到:

<div id="partialResult"></div> 

另外,對於上面的例子,我在視圖中添加了一個按鈕來啓動ajax (純粹用於測試):

<input type="button" value="Submit" id="submit" /> 

你的「partialview」應該是這個樣子:

@model string 
<h2> 
    Partial Test</h2> 
<p> 
    @Model 
</p> 

沒有其他變化,需要對現有的行動這是需要現在運行。

[UPDATE] - 我更改了AjaxTest()方法以包含錯誤事件(其結果被捕獲到警報中)。希望這可能會有所幫助。

+0

我是一個有點困惑......我不知道該代碼是怎麼回事,使成功的功能觸發,當我返回一個局部視圖。 – user1157885 2012-03-02 15:21:14

+0

你好。 'magic'部分包含在這裏'success:function(data)'其中'data'將partialview的內容返回給客戶端,然後目標div被填充該結果。我知道這是有效的,因爲我實際上嘗試過它。使用上面的代碼時你會遇到什麼問題?基本上,'success'本身不是一個函數[方法],它是'$ .ajax'對象引發的事件。這是一個很大的差異,也許這就是你需要澄清的問題:-) – 2012-03-02 15:27:21

+0

嗯..假設我的控制器代碼是正確的(在原始文章中),但在進行這些更改後仍然不成功。 – user1157885 2012-03-02 15:38:40

0

部分視圖與視圖不同,您必須指定部分視圖的完整路徑或將其放在共享文件夾中。否則會返回未找到並且從未成功。無論如何這總是爲我工作,儘量

partialView("~/Views/ControllerView/Test.cshtml")