2009-08-13 148 views
1

我試圖做一個ajax調用並填充「數據」div與ajax調用的結果, 但我得到一個錯誤說:「服務器錯誤在'/'應用程序中找不到資源說明:HTTP 404.請求的URL:/ Home/GetStuff「 當我使用Firebug查看請求是GET/Home/GetStuff並且答案是404未找到。爲什麼我沒有按照我在ajax調用中的要求做POST?我怎樣才能做POST?

我試過使用$ .post並得到相同的行爲,雖然我沒有檢查jQuery代碼,我假設$ .post是$ .ajax的包裝。

另外我試過Ajax.ActionLink,它工作正常,但我想使用jQuery而不是微軟的ajax js庫。

的代碼如下:

首頁/ TestStuff.aspx

function aClick() { 
    $.ajax({ 
     type: "POST", 
     url: $("#MeFwd").href, 
     data: ({ accesscode: 102, fname: "JOHN", page: 0 }), 
     dataType: "html", 
     success: renderData 
    }); 
}; 

function renderData(data) { 
    $("#Data").html(data.get_data()); 
} 


<div id="Data"> 
</div> 
<div id="link"> 
    <a href="<%= Url.Action("GetStuff", "Home") %>" id="MeFwd" onclick="aClick"> Click Me!</a> 
</div> 

HomeController.cs

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult GetStuff(int accessCode, string fName, int? page) 
{ 

return "<table><tr><td>Hello World!</td></tr></table>"; 
} 

回答

6

更改您的onclick = 「A單擊」 到的onclick = 「A單擊();返回false;」。點擊鏈接是做一個到達URL而不是運行你的JS。

+0

這將禁用鏈接,但url.Action是導致GET的原因。通過添加像BStuthers在這裏所說的返回錯誤,它應該清除問題。 – JamesEggers 2009-08-13 12:48:25

+0

你不認爲他調用renderData並且不傳遞任何東西也可能是一個問題? – Martin 2009-08-13 12:50:25

+0

我已將onclick =「aClick」更改爲onclick =「aClick(); return false;」它工作得很好。它似乎調用renderData工作得很好,除了它應該說:$(「#Data」)。html(data); 非常感謝大家。 – alexs 2009-08-13 13:14:01

0
$('#MeFwd').click(function() { 
    $.ajax({ 
     type: "POST", 
     url: $("#MeFwd").href, 
     data: ({ accesscode: 102, fname: "JOHN", page: 0 }), 
     dataType: "html", 
     success: function(data){ 
      $("#Data").html(data); 
     }); 
    }); 
}; 

我不認爲你可以調用功能在你的回報...但我可能是錯的。

或可考慮負載: http://docs.jquery.com/Ajax/load#urldatacallback

相關問題