2013-05-10 125 views
0

好的,所以這是一個奇怪的。我的Ajax調用似乎同時調用成功和失敗。當我發送我的Ajax調用時,它會發送到數據庫,但也會拋出錯誤消息。所以Ajax調用正在工作 - 只是帶有錯誤消息。當我使用Fiddler檢查問題時,請求發佈爲200(成功)。Ajax調用成功和失敗

的代碼非常簡單:

var myDataObject = new Object(); 
myDataObject.one = $('#SomeTextBoxId').val; 
myDataObject.two = $('#SomeOtherTextBoxId').val   

// NOTE: AJAX is calling success and fail 
SendAjax("/ServiceHandlers/SomeHandler?HandlerName", myDataObject, function() { alert("SUCCESS!");}, function() {alert("FAILURE?");}); 

這裏是SendAjax功能:

function SendAjax(postUrl, postData, successFunction, failureFunction) 
{ 
    /* 
    postUrl:   The URL to which the request will be posted 
    postData:   The JSON encoded input to be posted to the postUrl 
    successFunction: The function to be executed on a successful post 
    failureFunction: The function to be executed on a failed post 
    */ 

// Stringify the postData 
postData = JSON.stringify(postData); 

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: postUrl, 
    data: postData, 
    success: function (data, status, xhr) 
    { 
     successFunction(data, status, xhr); 
    }, 
    error: function (xhr, status, error) 
    { 
     failureFunction(xhr, status, error); 
    } 
}); 
} 

有什麼建議?

編輯 - 修正了Ajax調用函數,仍然沒有運氣。

+1

您的代碼是否讀取了'function {alert(「SUCCESS!」);}'或'function(){alert(「SUCCESS!」);}'?這些括號非常重要。 – Gareth 2013-05-10 14:07:25

+0

順便說一下,這是什麼Ajax框架?看起來不錯和簡單。 – Goodwine 2013-05-10 14:10:56

+0

@Gareth對不起,它讀取函數(){alert(「SUCCESS!」);} – 2013-05-10 14:13:26

回答

0

您正在調用警報。你沒有通過引用傳遞他們。它應該看起來像

SendAjax("/ServiceHandlers/SomeHandler?HandlerName", myDataObject, 
    function() { 
     alert("SUCCESS!") 
    }, 
    function() { 
     alert("FAILURE?") 
    }); 

它試圖傳遞警報的返回值。而不是實際的功能本身。

+0

是的,對不起,也許這是一個不好的例子。即使我將它作爲函數傳遞,也會調用成功和失敗。 Ajax帖子然後失敗消息彈出半秒鐘。 – 2013-05-10 13:59:58

1

事情是你發送函數的方式,因爲參數是錯誤的。

當您「發送」alert("SUCCESS!")作爲參數時,您不會發送它,而是調用它。

相反,您需要在旅途中創建容器功能。就像這樣:

// You can make it a single line if you want, 
// I'm was just trying to separate it to look more clear 
SendAjax(
    "/ServiceHandlers/SomeHandler?HandlerName", 
    myDataObject, 
    function() { alert("SUCCESS!") }, 
    function() { alert("FAILURE?") } 
); 
+0

是的,對不起,也許這是一個不好的例子。即使我將它作爲函數傳遞,也會調用成功和失敗。 Ajax帖子然後失敗消息彈出半秒鐘。 – 2013-05-10 14:00:25