2012-04-25 57 views
-2

每當jQuery被觸發時,我收到錯誤500 Internal Server Error,有沒有人有任何想法爲什麼下面的代碼可能會導致這種情況?jQuery,運行jQuery語句時出現「500內部服務器錯誤」

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<script src="../meta/js/jquery-1.7.2.js"></script> 
<script> 

    $(document).ready(function() { 
     $('#form1').submit(function(e){ 
      e.preventDefault(); 
      alert('I clicked it'); 
     }); 
    }); 

</script> 
</head> 
<body> 

<form name="form1" method="post"> 
    <button id="button">grab user data</button> 
    <select></select> 
</form> 

</body> 
</html> 
+1

你是否包含jQuery?我沒有看到它添加到任何地方...... – 2012-04-25 20:31:17

+3

jQuery在客戶端上執行。 500是服務器上生成的http錯誤代碼。這個問題沒有意義。 – recursive 2012-04-25 20:33:22

+0

爲什麼表單中的動作爲空?這很可能會嘗試發佈到/並且如果您的頁面處於/未處理您的帖子,那麼您的服務器可能會在此時拋出500錯誤。 – 2012-04-25 20:47:14

回答

0

爲了達到你想要這將做的工作是什麼:

<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script> 
    $(document).ready(function() { 
     $('#myButton').on('click',function(){ 
      alert("i clicked it"); 
      }); 
    }); 
</script> 
</head> 
<body> 
    <button id="myButton">Click Me!</button> 
</body> 
</html> 

$(document).ready用來執行你的頁面呈現剛過你的代碼,然後$('myButton')會得到什麼元素與一個id爲「myButton」,那麼你將使用方法「on」來附加任何你想要的事件,在這種情況下,你會想選擇「點擊」事件,那麼你應該給一個匿名函數,你會把代碼您想要執行該操作。

+0

目前沒有任何事情發生在服務器端。所有運行的代碼都包含在問題中。在我繼續之前,我正在測試以查看是否有語法。我是jQuery的新手,幾乎不知道我在做什麼。 – 2012-04-25 20:48:50

+0

好吧,所以你沒有使用.NET?如果你解釋你想要達到什麼,它將會有所幫助。 – 2012-04-25 20:51:31

+0

我正在嘗試使用jQuery來提醒我是否以及何時單擊按鈕。這是一個簡單的目標,但是我剛剛在30分鐘前開始使用jQuery。 – 2012-04-25 20:59:40

3

我會猜它這個變量的原因:

<%=button.ClientID %> 

沒有什麼別的(如圖所示),這將意味着其他任何將拋出一個錯誤。

你能說清楚'jQuery被觸發'是什麼意思嗎?這是否意味着'點擊'? 或者只是通過加載這個頁面(我假設後)

+1

@BrookJulias - 爲了清楚起見,「500內部服務器錯誤」通常意味着你有服務器錯誤,而不是客戶端錯誤,這意味着與javascript/jQuery無關。 – 2012-04-25 20:35:33

+0

@Jakub - 我指的是點擊按鈕時,而不是頁面加載時。 – 2012-04-25 20:44:04

+0

@Keven B - 如果錯誤不是由代碼引起的,那麼可能會導致這個問題呢?直到按鈕被點擊並且代碼被執行,它一直運行無錯誤。 – 2012-04-25 20:44:33

1

我猜想,它給錯誤這一行:

$('#<%=button.ClientID %>') 

硬編碼值,而不是和測試:

$('#buttonID') 
+0

我已經將'$('#<%= button.ClientID%>')'更改爲'$('#button')'硬編碼該id,但錯誤仍然存​​在。 – 2012-04-25 20:41:02

+0

看起來像這是在ASP.NET Webforms應用程序中使用的,因爲<%= button.ClientID%>調用將用頁面編譯期間ASP.NET Webforms生成的實際損壞的按鈕ID替換該標記。 – 2012-04-25 20:42:28

+0

@BrookJulias就這麼說,它似乎是一個服務器問題,而不是jQuery ..你正在導入jQuery正確 - 你沒有任何包括它?你也可以嘗試刪除按鈕,而不是顯示一個提示:$(document).ready(function(){alert(「hi」);}); – 2012-04-25 20:45:08

0

您的按鈕位於action =「」的標籤內。這將導致回發到「/」。如果你的服務器沒有正確處理,你會得到一個內部服務器錯誤。

如果您只希望顯示警報,則可以調用jQuery事件對象上的preventDefault。下面硒例如:

$(document).ready(function() { 
    $('#<%=button.ClientID %>').click(function(e) { 
     e.preventDefault(); 
     alert("i clicked it"); 
    }); 
}); 

編輯: 忘記我上面寫的。它不起作用。而是使用表單上的提交事件。就像這樣:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <script src="@{'/public/javascripts/jquery-1.6.4.min.js'}" type="text/javascript" charset="${_response_encoding}"></script> 
    <script> 
     $(document).ready(function() { 
      $('#form1').submit(function(e){ 
       e.preventDefault(); 
       alert('I clicked it'); 
      }); 
     }); 


    </script> 
</head> 
<body> 

<form id="form1" method="post" action=""> 
    <button id="button">grab user data</button> 
    <select></select> 
</form> 

</body> 
</html> 
-1

您正在將submit事件附加到#form1,但您的表單沒有ID,只有名稱。您必須按名稱選擇表格,$("form[name='form1']")或給它一個ID爲id="form1"

+0

爲什麼downvote?我是唯一真正發現問題的人...... – user2560528 2015-11-18 17:05:35

相關問題