2012-03-22 25 views
0

我有這樣的HTML爲什麼當幾乎相同的成功成功時,我的ajax調用失敗?

<a href="/noJavascript" id="rejoinGroups">Rejoin</a> 
<a href="/noJavascript" class="removeGroup" id="Testing">Remove</a> 

,我使用unobstrusive的JavaScript像這樣結合的鏈接的功能:

$(function SetUp() 
    { 
    var el = document.getElementById('rejoinGroups'); 
    el.onclick = rejoinGroups; 
    var removeElements = document.getElementsByClassName('removeGroup'); 
    for (var i = 0; i < removeElements.length; i++) { 
     removeElements[i].onclick = function() { 
      removeGroup(this.id); 
     } 
    } 
    }); 

可能有許多「刪除」鏈接生成的,因此爲什麼我綁定它不同的是,(但目前我只有一個),並通過id作爲函數參數。

這些是我參與的功能。 我故意讓它們與第一個(使用groupName參數)不一樣,但是第二個是這樣做的,我不明白爲什麼它們是相同的。一旦解決了這個問題,我實際上會使用groupName參數。第二個返回200代碼,第一個立即給出'Error0'消息,然後進入/noJavascript頁面。我只能假設這是與參數有關,但它似乎設置正確,所以我不知道它是什麼。我錯過了什麼?

function removeGroup(groupName){  
    $.ajax({ 
      url: '/tasks/aTask', 
      type: 'POST', 
      data: {userId:38}, 
      success: function(data, textStatus, jqXHR) 
      {   
       alert(jqXHR.status);      
      }, 
      error: function(jqXHR, textStatus, errorThrown) 
      { 
       alert("Error" + jqXHR.status); 
      } 
     }); 
     return false;   
} 

function rejoinGroups(){ 
    $.ajax({ 
      url: '/tasks/aTask', 
      type: 'POST', 
      data: {userId:38}, 
      success: function(data, textStatus, jqXHR) 
      {   
       alert(jqXHR.status);      
      }, 
      error: function(jqXHR, textStatus, errorThrown) 
      { 
       alert("Error" + jqXHR.status); 
      } 
     }); 
     return false; 
}  

這是我的第二個功能Chrome瀏覽器開發的窗口得到:

Request URL:http://localhost:8888/tasks/aTask 
Request Method:POST 
Status Code:200 OK 
Request Headersview source 
Accept:*/* 
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6 
Connection:keep-alive 
Content-Length:9 
Content-Type:application/x-www-form-urlencoded 
Cookie:[email protected]:true:18580476422013912411; JSESSIONID=10yktze1j72fa 
Host:localhost:8888 
Origin:http://localhost:8888 
Referer:http://localhost:8888/users/38 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11 
X-Requested-With:XMLHttpRequest 
Form Dataview URL encoded 
userId:38 
Response Headersview source 
Content-Length:0 
Server:Jetty(6.1.x) 

,這是我得到的第一個(失敗的)之一:

Request URL:http://localhost:8888/tasks/aTask 
Request Headersview source 
Accept:*/* 
Content-Type:application/x-www-form-urlencoded 
Origin:http://localhost:8888 
Referer:http://localhost:8888/users/38 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11 
X-Requested-With:XMLHttpRequest 
Form Dataview URL encoded 
userId:38 
+3

這纔是真正的代碼? 'groupName'參數已通過但從未使用? – 2012-03-22 20:56:00

+0

@JamesMontagne'真正'的代碼失敗了,我無法弄清楚爲什麼,所以我用一些正在工作的代碼替換它(不使用參數),看看我能否找出它失敗的原因,這仍然失敗了,這讓我覺得它與參數或綁定有關。所以真正的代碼將使用param,但是如果我能夠得到上面的代碼來工作,我認爲真正的代碼也應該如此。我已經編輯了這個問題來使這個更清楚。 – 2012-03-22 21:00:17

+0

我只是問,因爲我看不出這兩個相同的函數有不同的結果。我覺得必須有一些缺失導致問題。 – 2012-03-22 21:04:28

回答

3

我不太確定,但我想這可能是因爲你的匿名函數沒有返回函數的結果。嘗試改變:

removeGroup(this.id); 

return removeGroup(this.id); 
+0

這會引入一個閉環內部for循環錯誤 – hugomg 2012-03-22 21:08:09

+0

但是從不使用傳遞的參數。 – 2012-03-22 21:08:12

+0

我只是想,也許腳本在死亡之前甚至到達函數,所以傳遞的參數無關緊要。但顯然,由於這個問題的編輯,這不是發生了什麼事情。 – Rick 2012-03-22 21:10:47

相關問題