2009-10-13 210 views
1

我正在創建一個基本的ASP.NET MVC應用程序。我想用jQuery來讓兩個按鈕以不同的方式提交表單。我得到的錯誤是「Object expected」。獲取jquery:'Object Expected'錯誤

下面是按鈕:

<input type="button" id="StartTask" value="Start" onclick="StartTask()" /> 
<input type="button" id="StopTask" value="Stop" onclick="StopTask()" /> 

這裏是我的腳本標籤:

<script src="~/Scripts/jquery-1.3.2.js"  type="text/javascript" /> 
<script src="~/Scripts/jquery-1.3.2-vsdoc.js" type="text/javascript" /> 
<script type="text/javascript"> 
    $("#StartTask").click(function() { 
     $.post("/Home/StartTask"); 
    }); 
    function StopTask() { 
     $.post("/Home/StopTask"); 
    } 
</script> 

的功能是不同的,因爲我嘗試不同的東西。
隨着jquery包括,兩個按鈕給我「對象預期」。沒有jquery包含,$(「#StartTask」)上的開始按鈕炸彈和$ .post()上的第二個炸彈。

編輯:添加控制器的方法

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult StartTask() 
{ 
    return View(); 
} 

,小白一步我缺少什麼基本?

獎勵:有人可以指點我的教程,可以幫助我解決這個問題嗎?

+0

關鍵是我的

2

可能當$(「#StartTask」)被調用時,您的尚未被添加到DOM樹中。

一種肯定的方式是:

<script type="text/javascript"> 
    $(window).ready(function(){ 
    $("#StartTask").click(function() { 
     $.post("/Home/StartTask"); 
    }); 
    $("#StopTask").click(function() { 
     $.post("/Home/StopTask"); 
    }); 
    }); 
</script> 

<input type="button" id="StartTask" value="Start" /> 
<input type="button" id="StopTask" value="Stop" /> 
+0

這不是要修復StopTask轟炸,但是 – Evildonald 2009-10-13 16:00:10

+0

@Mauris,謝謝。試過了。沒有工作。你還有什麼? – Rap 2009-10-13 16:24:15

+0

更新後。 @bpayne - 出了什麼問題? – mauris 2009-10-13 16:32:50

1

你正在做的按鈕點擊同一件事兩種不同的方式。讓他們一致開始。你的開始很興奮,因爲這個功能不存在..而停止可能由於幾個原因而爆炸。要開始..讓他們都工作相同,由任一。

腳本這個(直JS功能)更改:

<script src="~/Scripts/jquery-1.3.2.js"  type="text/javascript" /> 
<script src="~/Scripts/jquery-1.3.2-vsdoc.js" type="text/javascript" /> 
<script type="text/javascript"> 
    function StartTask() { 
     $.post("/Home/StartTask"); 
    } 
    function StopTask() { 
     $.post("/Home/StopTask"); 
    } 
</script> 

OR

(jQuery的註冊方式)

您的按鈕來此:

<input type="button" id="StartTask" value="Start" /> 
<input type="button" id="StopTask" value="Stop" /> 

和你的代碼:

<script src="~/Scripts/jquery-1.3.2.js"  type="text/javascript" /> 
<script src="~/Scripts/jquery-1.3.2-vsdoc.js" type="text/javascript" /> 
<script type="text/javascript"> 
    $.(document).ready(function() { 
     $("#StartTask").click(function() { 
      $.post("/Home/StartTask"); 
     }); 
     $("#StopTask").click(function() { 
      $.post("/Home/StopTask"); 
     }); 
    }); 
</script> 

PS告訴我你要去哪一個,如果你願意,我可以爲你進一步解釋。

UPDATE:關於StopTask轟炸,您的MVC控制器方法是否有上面這個呢?

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult StopTask() { 

如果您使用$ .post()命令,則需要使用它。

+0

是的,我們有AcceptVerbs裝飾器。感謝您的提醒。我有兩種不同的方式的原因是測試兩種方式,並顯示SO人都失敗了。只要有效,我都可以採用任何一種方法。 – Rap 2009-10-13 16:21:06

+0

剩下的問題似乎是您的$ .post()失敗。你可以說得更詳細點嗎?如果你在你的StopTask MVC方法的第一行放置了一個斷點,那麼它會被擊中(即路徑是否解析?) – Evildonald 2009-10-13 16:47:33

+0

不會。它沒有被擊中。它永遠不會到達那裏。 – Rap 2009-10-13 19:00:59

0

嘗試刪除onclick="StartTask()"

+0

當我刪除onclick =「StartTask()」時,按鈕點擊沒有任何反應。我在處理程序中放置了一個斷點和一個alert()。從不打。 – Rap 2009-10-13 18:01:30

0

我會同時刪除

onclick="StartTask()" 
onclick="StopTask()" 

他們做同樣的事情(處理事件)作爲。點擊jQuery,你不需要兩個事件處理程序,並且你已經沒有聲明的StartTask函數。

取而代之,請在JavaScript中進行事件處理。

<script src="~/Scripts/jquery-1.3.2.js"  type="text/javascript" /> 
<script src="~/Scripts/jquery-1.3.2-vsdoc.js" type="text/javascript" /> 
<script type="text/javascript"> 
// this does not execute the query until the DOM is ready 
// passes the "jQuery" to it in case you have other $ libraries 
(function($) { 
    // this adds the click event to the StartTask 
    $("#StartTask").click(function() { 
     $.post("/Home/StartTask");  
    }); 

    // this adds the click event to the StopTask 
    $("#StopTask").click(function() { 
     $.post("/Home/StopTask");  
    }); 

})(jQuery); 
</script> 
+0

-1杜佩建議 – Evildonald 2009-10-13 17:00:45

+0

你剛剛-1我是否是惡毒?如果是這樣,那就起來吧,至少承認它。 – Evildonald 2009-10-13 18:12:02