2014-07-22 76 views
0

试图了解阿贾克斯....ajax成功处理程序有什么意义?

在我的ajax调用我有一个成功处理程序。我也有一个目标网址,即ajax将数据扔到(我可以想到描述它的最佳方式)。

  • 如果我的目标网址是有效的 - 成功。
  • 如果我的目标网址是拼写错误 - 成功。
  • 如果我的目标网址是垃圾 - 成功。

那么......它的目的是什么?

// 1. Put a trigger on the right button 
$("#submitButton").click(function(){ 
    alert("trigger event"); 

// 2. serialise the form data 
    var formData = $("#myForm").serializeArray(); 

// 3. make an ajax call to the controller 

    $.ajax({ 
     type: "POST", 
     url: "controllerThatDoesntExist/function", 
     data: formData, 
     success: successHandler, 
     dataType: "text" 
     }); 

}); 

function successHandler(data, textStatus, jqXHR) 
    { 
     alert("Success is 100% guaranteed"); 
    }; 
+0

的函数,如果请求成功被调用。 http://api.jquery.com/jquery.ajax/ –

+0

如果情况确实如此,你最后两点根本不起作用,你能否生成一个测试用例?如果有这些情况,则应使用错误回调来查看错误原因。 – Jai

+0

@Suraj - 所以,因为请求成功100%的时间,函数总是被称为...似乎有点没有意义。 – Maxcot

回答

3

如果您所看到的success函数被调用了不存在的资源,这意味着资源正在从加载服务器发送使用HTTP状态代码200,而不是一个无效响应的4xx系列。问题是服务器,而不是jQuery的ajax函数。

如果服务器做什么,它应该与无效的网址做,ajax不会叫success并呼吁error代替(以及类似的功能,在新Promise东西)。

这里是一个成功的请求:http://jsfiddle.net/5F7NV/

// Successful request 
var xhr = $.ajax({ 
    url: "/", 
    success: function(html) { 
     console.log("Success, got back " + html.length + " characters of HTML"); 
    }, 
    error: function(jqXHR) { 
     console.log("Error, status code: " + jqXHR.status); 
    } 
}); 

这里是一个不成功的请求:http://jsfiddle.net/5F7NV/1

// Request for something that doesn't exist 
$.ajax({ 
    url: "/blargleflap", 
    success: function(html) { 
     console.log("Success"); 
    }, 
    error: function(jqXHR) { 
     console.log("Error, status code: " + jqXHR.status); 
    } 
}); 
+1

我坐在这里笑...我一整天都在探索阿贾克斯,我没有更接近理解它是如何工作的,但它确实如此。我有一个codeigniter MVC框架,运行在XAMPP本地apache服务器上。我做了一个ajax调用一个完全是虚构的URL,我得到了积极的回应。每一个。该死的。时间。我想睡觉的时候了。 – Maxcot

+0

@maxcot你能分享你的实际代码吗? –

+0

@Maxcot:因为显然你的服务器正在发回200响应。每一个。时间。 (请不要发誓) –

相关问题