为什么我的ajax调用在几乎完全相同的情况下失败了?

时间:2012-03-22 20:51:05

标签: javascript jquery ajax

我有这个HTML

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

我正在使用不引人注目的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 dev窗口中获得的第二个函数:

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:dev_appserver_login=test@example.com: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

1 个答案:

答案 0 :(得分:3)

我不太确定,但我认为这可能是因为你的匿名函数没有返回函数的结果。尝试更改:

removeGroup(this.id);

return removeGroup(this.id);