2010-03-05 37 views
0

這段代碼有什麼問題。代碼是找到顯示的javascript和debug1。如果我刪除參數p,代碼還會找到mycontrol操作,並顯示debug2。

查看:

function method(p) { 
    alert("debug1"); 
    $.post('../MyController/MyAction/' + p, function() { 
     alert("debug2"); 
     $('#panel').empty().html('<img src="../Content/images/ajax-loader.gif"/>'); 
     $('#panel').load('../Controller/Index'); 
    }); 
} 

控制器:

public ActionResult MyAction(int p) 
    { 
     // Some code 

     return null; 
    } 
+0

檢查「網絡」選項卡,你可能會發現問題。另外,你的路線如何建立? – 2010-03-05 08:44:54

+0

你可以發佈調用'method'的代碼以及你的Global.asax.cs文件中的相關部分 - 我懷疑p的值不是一個整數,因此URL不能被正確路由。另外,開始使用HTTP嗅探器,例如Fiddler(IE的lugin)來查明幕後到底發生了什麼。 – belugabob 2010-03-05 09:07:54

回答

2

對我來說好像你有你的路線有問題。如果不更改路線,則不能更改參數的名稱。將您的方案工作路線是:

routes.MapRoute("MyRoute", 
      "MyController/MyAction/{p}", 
      new { controller = "MyController", action = "MyAction", p = "" } 
      ); 
0

這個函數是一個回調且不論成功或失敗的將被調用。如果您打電話給web服務,請嘗試在您的結果中包含成功= true/false屬性。這樣你可以做到以下幾點

`$.post('../MyController/MyAction/' + p, function(result) { 
    if (!result.success) return; 

    alert("debug2"); 
    $('#panel').empty().html('<img src="../Content/images/ajax-loader.gif"/>'); 
    $('#panel').load('../Controller/Index'); 
});` 
+0

是的,這可能是一個好的IDE,但問題是執行沒有進入我的行動方法。如果我將MyAction中的inparametername更改爲id,而不是實際使用它的索引。 Someopne誰能解釋? – karl 2010-03-05 09:19:28

+0

@mattias是正確的,在你的情況下,那麼這是一個路由問題 – 2010-03-05 09:58:37

1

只要改變這樣的:在Firebug

$.post('../MyController/MyAction/p=' + p, function() {