2014-07-22 75 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響應。每一個。時間。 (請不要發誓) –

相關問題